1. はじめに
kintone や Garoon など cybozu.com を利用中でユーザーの二重管理が大変なんだよなぁ…という方に朗報です。
今回はLDAPサーバー(Active Directory や OpenLDAPなど)のユーザー情報を cybozu.com と連携するサンプルツールをご紹介します。
2. 概要
連携の構成は以下の通りです。
サンプルツールはLDAPサーバーの情報を取得し、取得した内容を cybozu.com に登録可能な CSVファイルに出力します。
さらに、その CSVファイルを「User API」を利用して cybozu.com に登録します。
連携できるデータは以下の通りです。
- ユーザー
- ユーザーの所属組織
- ユーザーの利用サービス
「組織」、「役職」、「グループ(ロール)」、「ユーザーの所属グループ(ロール)」は連携できないのでご注意ください。
※組織に所属させること、役職を付与することは可能ですが、事前に組織と役職を登録する必要があります
サンプルツールのソースコードは GitHub に MITライセンスで公開していますので、組織などの連携にも是非チャレンジしてください。
機能が足りない場合、ソースコードの改修も難しい場合は連携ソリューション(有料)の利用をご検討ください。
3. 動作環境
動作環境は以下の通りです。
- cybozu.com
- LDAPサーバー(Active Directory や OpenLDAPなど)
- サンプルツール実行用端末(Java 8 もしくは Java 10 が動作し、cybozu.com、LDAPサーバーにネットワーク接続できること)
4. 実行準備
サンプルツールをダウンロードしてください。
設定ファイルも必要ですのでダウンロードし、設定ファイル内のコメントに従い内容を修正してください。
- LdapToCybozu.jar ・・・ サンプルツール
- connection.cfg ・・・ cybozu.com と LDAPサーバーとの接続情報などを設定します
- user-map.cfg ・・・ LDAPサーバーと cybozu.com とのユーザー情報の紐づけを設定します
- org-map.cfg ・・・ LDAPサーバーと cybozu.com とのユーザーの所属組織情報の紐づけを設定します
ダウンロードした設定ファイルは実行するのに必要な最低限の設定のみに絞っています。
さらに詳細な設定については GitHub の README をご確認ください。
5. 実行方法
設定できたら、以下のコマンドで連携を実行します。
- CSVファイルの作成のみを実行する場合
$ java -jar ./LdapToCybozu.jar ./connection.cfg ./user-map.cfg ./org-map.cfg -export
- cybozu.com への登録のみを実行する場合(事前に CSVファイルの作成を実行する必要があります)
$ java -jar ./LdapToCybozu.jar ./connection.cfg ./user-map.cfg ./org-map.cfg -import
- CSVファイルの作成及び cybozu.com への登録の両方を実行する場合
$ java -jar ./LdapToCybozu.jar ./connection.cfg ./user-map.cfg ./org-map.cfg -export -import
6. 便利機能
ここでは知っておくと便利な機能を紹介します。
連携の成功/失敗を判定する
連携の結果はメールなどで知りたいですよね。
連携の結果(成功/失敗)は以下のように判定できます。
- Linux(ShellScript)の場合
- Windows(PowerShell)の場合
組織には所属させない
org-map.cfgを指定しなければユーザーの所属組織読み込み用のCSVファイルを作成しません。
$ java -jar ./LdapToCybozu.jar ./connection.cfg ./user-map.cfg -export
CSVファイルが存在しなければcybozu.comにも連携しません。
ただし、過去にorg-map.cfg指定ありで連携を実行するなどしてCSVファイルが存在する場合はcybozu.comに連携します。
利用サービスを設定しない
connection.cfgの設定項目「Default Service Code」をコメントアウトしてください。
ユーザープロフィールのカスタマイズ項目の連携
cybozu.com ではユーザーのプロフィールに項目を追加できます。
(追加の方法についてはこちら「cybozu.com ヘルプ」をご確認ください)
追加したカスタマイズ項目を連携するには設定ファイル「user-map.cfg」の最下部をご覧ください。
7. 運用時に気を付けること
パスワードの設定を間違えてしまうと利用者がログインできなくなるので注意が必要です。
設定例を紹介しますので参考にしてください。
cybozu.com をこれから利用する場合の設定例
cybozu.com共通管理で「管理者が設定した仮パスワードの変更をユーザーに要求する」を設定し、「password=sAMAccountName」にして連携します。
そうすれば初回のログインはアカウント名=パスワードにでき、ログイン直後にパスワードの変更が要求されます。
この時、2回目以降の連携では「password=」に変更することを忘れないでください。
忘れてしまうと再度、アカウント名=パスワードに設定されます。
cybozu.com を既に利用していて、後から連携する場合の設定例
「password=」にして連携することでパスワードは更新されません。
運用後に追加されたユーザーの対応
「password=」の設定で運用を開始した後に LDAPサーバーに追加されたユーザーは、cybozu.com に登録はされますがログインできません。
その場合は cybozu.com共通管理の設定で仮パスワードを発行する必要があります。
cybozu.com でパスワードは管理せずに Azure Active Directory や 連携ソリューション を使ってシングルサインオンすることも1つの手段です。
シングルサインオンに利用する SAML認証の概要や注意事項はこちら(SAML認証を使用したシングルサインオンを設定する)をご確認ください。
※アクセス方法によっては SAML認証されずに cybozu.com共通管理のパスワードで認証される場合があります。
必ず注意事項をご確認ください。
ユーザーの削除
LDAPサーバーのユーザーを削除しても cybozu.com共通管理のユーザーは削除されません。
削除するには手動での対応が必要です。
※正確にはuser-map.cfgの設定項目「To Be Deleted」を利用することでユーザーを削除できますが、サンプルのuser-map.cfgには「To Be Deleted」は記載していません。
※ユーザーエントリーのプロパティを使って、ユーザーを使用停止にすることは可能です
8. 終わりに
既に cybozu.com の運用が始まっている場合は利用を躊躇されるかもしれません。
もし良ければ以下のような始め方をご検討ください。
- CSVの作成までを実行して、CSVの内容を確認する
- 連携対象となるユーザーをフィルターで絞り込む
- 本番環境とは異なる別のドメインで試してみる
少しでも皆さんの運用負担が軽減されれば幸いです。
このTipsは、2018年8月版 cybozu.comで確認したものになります。
記事に関するフィードバック
直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。