社内のAD(Windows Acitve Directory)のユーザー認証機能を利用するために、DrupalのLDAPモジュールをインストールして、有効化後に「サーバー」、「ユーザー」、「認証」などを設定しました。Drupalのログイン画面でADユーザーログイン名とパスワードを入力して認証すると、「該当ユーザーまたはパスワードの確認ができない」とのエラーメッセージが表示されました。
LDAPの「サーバー」または「ユーザー」のどこかの設定が間違っていったか、環境の設定が間違っていた、LDAPとの通信ができないか、いろいろな可能がありまして、まずその認証の仕組みを理解するためにLDAPのソースコードを真面目に読み始めました。大量なコードを読むのは大変なので、コードに「ldap_help_watchdog_detail」がオンであれば、いろいろな詳細なログが残っているはずだとわかりました。いろいろ調べて、詳細ログの表示させる方法を纏めました
- インストールされたモジュール、Durupalのバージョン
- Drupal:7.37
- LDAP:7.x-2.0(必要なサブモジュールをオンにする)
- Drupalコアモジュールにある「Database logging」モジュールをオンにする(これモジュールを有効にしないと、LDAP詳細なログの吐き出しはできない)
- LDAP管理画面(Home » Administration » Configuration » People » LDAP Configuration)の「SETTINGS」タブで、DEVELOPMENTセクション(上記loggingがオンにしないと、このセクションが表示されない)の「Enabled Detailed LDAP Watchdog logging. This is generally for debugging and reporting issues with the ldap modules and should not be left on.」選択肢をオンにします
- 上記設定が完了後に、Drupalのログイン画面で、ADユーザーのログイン名とパスワードを入力して、再度ログイン認証をかけ、当然失敗します。
- 管理者アカウントでログインして、Report(Home » Administration » Reports » Recent log message)を開いて、さっきログイン失敗の詳細ログがありました
- ログから見てみると、ログインユーザー名の照合先のAD属性名が間違って設定してしまったことがわかりました