Title: LDAPS 設定
ここでは、SSL/TLS で暗号化された LDAP サーバーで TeamPage のユーザー認証をする方法を解説します。
まず、LDAP 設定 を参考にして基本的な LDAP 設定プロファイルを作成してください。
次に、「サーバー URL」欄で指定する LDAP サーバーのアドレスを ldap:// から ldaps:// に変更します。ポート番号を省略した場合は自動的に 636 番が使用されます。
必要に応じてその他の設定を済ませます。
最後に、画面下部の [保存] ボタンをクリックして設定を保存します。
動作テスト
上記の設定で正しく LDAP サーバーにアクセスできるか、認証ができるかのテストをします。
画面下部の [テスト] ボタンをクリックしてテスト画面を表示します。
ログインのテスト
ユーザー名とパスワードを入力し [ログインのテスト] ボタンをクリックします。ログインに成功すると「ログインできました」と表示されます。
ルックアップのテスト
LDAP サーバーに登録されているユーザーを一覧表示します。「アカウント名の入力」欄にユーザー名の一部を入力し、[ルックアップのテスト] をクリックします。
- 該当するユーザーが見つかった場合は、下図のように「LDAP ユーザー」または「TeamPage ユーザー」として表示されます。
- 該当するユーザーが見つからなかった場合は、「該当なし」と表示されます。
メモ : 「アカウント名の入力」欄に何も入力しないまま [ルックアップのテスト] を実行すると、LDAP サーバーに登録されているすべてのユーザーが表示されます。登録ユーザー数が多い場合、表示が終わるまで時間がかかることがあります。
テストが成功したら、テスト画面とユーザーディレクトリの設定画面を閉じます。
ユーザーディレクトリの変更
以上で問題なければ、ユーザー認証を LDAPS へ変更し、すでに TeamPage に登録されているユーザー情報を LDAP 上のユーザー情報に紐付けられます。
こちらの手順は別項で解説しています。 ユーザーディレクトリの変更とプリンシパルの移行 を参照してください。
トラブルシューティング
ログインやルックアップがうまくいかなかったりエラーが表示される場合は、下記を参考にして原因を特定してください。
サーバー証明書の信頼性
LDAP サーバーで使用されるサーバー証明書にグローバルサイン社などの信頼できる署名がある場合、TeamPage は証明書を信頼し、LDAP サーバーに接続します。しかし、信頼できる署名がない場合(自己署名のみの証明書)、信頼性が疑わしいと判断してサーバーへの接続を中止します。この場合、次のようなエラーが表示されます。
ディレクトリ サーバーに接続する際にエラーが発生しました。
javax.naming.CommunicationException: simple bind failed: centos.example.jp:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found]
この場合は、証明書を信頼するように手動で設定することで、この問題を解決できます。
ユーザーディレクトリの設定画面の「サーバー URL」の [信頼された認証の編集はここをクリックしてください] リンクをクリックし、「TLS マネージャ」画面を表示します。
注意 : 初めて「TLS マネージャ」画面を表示したとき、パスワードの入力を求められます。必ず何らかのパスワードを入力して先へ進んでください。
「TLSマネージャ」画面のドロップダウンリストから [信頼されていない証明書] を選択すると、LDAP サーバーの証明書が「証明書」リストに表示されます。この証明書をクリックして選択し、「選択されたエントリー」に表示された内容を確認して、[信頼された証明書の追加] をクリックします。
これで TeamPage が証明書を信頼するようになりました。ドロップダウンリストで [信頼されたサーバー証明書] をクリックして確認できます。
[閉じる] をクリックして「TLSマネージャ」画面を終了します。
再度テストを実行し、エラーが表示されなくなったことを確認します。
LDAP サーバー URL の誤り
ホスト名の誤り
ユーザーディレクトリの設定の「サーバー URL」に誤りがある場合、TeamPage は LDAP サーバーに接続できず、次のようなエラーを表示します。
ディレクトリ サーバーに接続する際にエラーが発生しました。
javax.naming.CommunicationException: centos.example.jpn:636 [Root exception is java.net.UnknownHostException: centos.example.jpn]
この例では、正しくは「centos.example.jp」とすべきところを誤って「centos.example.jpn」としているのが原因です。
識別名の誤り
正しくは「ou=People」とするところを誤って「ou=Users」とすると、下図のように URL で指定されたオブジェクトが見つからず、エラーになります。
ディレクトリ サーバーに接続する際にエラーが発生しました。
javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name ''
「サーバー URL」を確認し、正しい識別名に修正してください。
認証アカウントの誤り
LDAP サーバーに認証情報を問い合わせるユーザー(LDAP の管理者アカウント)の設定に誤りがあると、次のようなエラーが表示されます。
ディレクトリ サーバーに接続するためのユーザー名またはパスワードは拒否されました。
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
例えば、この例では、本来「cn=Manager」を指定すべきところを誤って「cn=admin」としていました。ここを訂正します。
サーバー間の通信状況の確認
TeamPage の デバッグ ログ や LDAP サーバーが書きだすログを使って、TeamPage と LDAP サーバーの通信ができているかどうかを確認できます。
LDAP サーバーのログ
LDAP サーバーの設定によっては、サーバーの動作状況が /var/log/slapd.log などのファイルに書き出されます。これを確認することで、TeamPage から正しく接続されているか、正しくリクエストされているかなどを確認できます。
Jan 26 15:43:14 centos slapd[4809]: conn=18 fd=15 ACCEPT from IP=10.0.1.81:2994 (IP=0.0.0.0:636)
Jan 26 15:43:14 centos slapd[4809]: conn=18 fd=15 TLS established tls_ssf=128 ssf=128
Jan 26 15:43:14 centos slapd[4809]: conn=18 op=0 BIND dn="cn=Manager,dc=example,dc=jp" method=128
Jan 26 15:43:14 centos slapd[4809]: conn=18 op=0 BIND dn="cn=Manager,dc=example,dc=jp" mech=SIMPLE ssf=0
Jan 26 15:43:14 centos slapd[4809]: conn=18 op=0 RESULT tag=97 err=0 text=
Jan 26 15:43:14 centos slapd[4809]: get_filter: conn 18 unknown attribute type=fullName (17)
Jan 26 15:43:14 centos slapd[4809]: conn=18 op=1 SRCH base="ou=People,dc=example,dc=jp" scope=2 deref=3 filter="(&(|(uid=*)(?=false))(objectClass=account))"
Jan 26 15:43:14 centos slapd[4809]: conn=18 op=1 SRCH attr=uid fullName objectClass
Jan 26 15:43:14 centos slapd[4809]: conn=18 op=1 SEARCH RESULT tag=101 err=0 nentries=12 text=
TeamPage のデバッグログ
サーバーセットアップ | サーバーファイル タブ | ログファイル タブ | デバッグ タブ を開き、[デバッグ情報を記録する] と [ldap] のチェックボックスをオンにすると、LDAP サーバーへのリクエスト内容などが debug.log ファイルに記録されます。
[ldap 木 1 26 15:49:35.937 JST 2012 Thread-108 admin] LdapConnector.lookupUser...
[ldap 木 1 26 15:49:35.937 JST 2012 Thread-108 admin] findAttributes [uid, fullName, objectClass] ...
[ldap 木 1 26 15:49:35.984 JST 2012 Thread-108 admin] done. 47ms
[ldap 木 1 26 15:49:35.984 JST 2012 Thread-108 admin] 12 results. 47ms