LDAP との連携

WebClass を LDAP に接続するための設定について説明します。

WebClassのシステム管理者の画面から LDAP の設定を行うことができます。ですが、サーバの環境によってはネットワーク経路の設定などが必要になることがあります。ここでは、システム管理者の画面から設定してもうまくいかない場合、もしくはネットワーク設定などを伴うことがはっきりしている場合に、丁寧に確認していくやり方を説明します。

前提

ldapsearch コマンドがインストールされていることを前提としています。debian では ldap-utils パッケージに含まれています。

ここではLDAPサーバに対して LDAPS を使用し、証明書は自己証明書が使用されていたと想定します。

事前の確認

  • LDAP サーバのIPとポート、プロトコル(LDAPかLDAPS か)
  • WebClass Web サーバとLDAP サーバのネットワーク経路
  • 参照するユーザの BaseDN
  • Bind DN
  • Bind PW
  • LDAPS の場合は、使用している証明書をご確認ください。自己証明書を使用していることがあります。

LDAP接続確認

LDAPサーバへの IP:Port の確認

LDAPサーバに対して通信経路が確保できているかどうかは、次のように telnet コマンドで確認できます。

$ telnet ldap.server 686

応答が得られれば経路は確保されています。telnet の終了は Ctrl + ] ののち q です。

もし接続できなければ、途中の経路がふさがっていないか確認します。

ldapsearch コマンドによる Bind までの確認

ldapsearch コマンドで以下のようにバインドの成功を確認します。ここでは cn=binduser,cn=users で認証を受け、検索するベースDNを cn=users にしたうえで、自分自身である cn=binduser を検索します。

$ ldapsearch -x -LLL -W -H ldaps://ldap.server -D "cn=binduser,cn=users" -b "cn=users"  "cn=binduser"
Enter LDAP Password

LDAPサーバに接続でき、バインドユーザとパスワードが通れば、検索結果が得られます。

仮に ldap.server に対して通信できない状況であっても、パスワードの入力確認まではそのまま進み、パスワード入力後に応答がなくなります。もしくは、例えばLDAPS を使用していて証明書チェックでエラーがあった場合は、次のようなエラー表示となります。

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

LDAPSの証明書チェックで通信できない時

即席の対応方法としては、証明書チェックを無効化します。

/etc/ldap/ldap.conf もしくは /etc/openldap/ldap.conf に以下の設定を追加します。

TLS_REQCERT never

この設定ファイルは ldapsearch コマンドでも、WebClass の LDAP 接続機能でも反映されます。

一時的に上記設定を加えて検証を進め、証明書以外の問題が解決されれば、証明書チェックを復活させると同時に LDAP の証明書を承認します。

 

WebClass での LDAP 認証確認

WebClass のシステム管理画面で LDAP の設定をすると、認証する際にLDAPを参照します。この時の動作は syslog にログが出力されます。

事前に LDAP との接続が可能か確認してあるので、ここではwebclassが実際にユーザを解決して認証する動きを確認できます。

もし WebClass から LDAP への問い合わせを細かく追跡する場合はシステムオプション LDAP_DEBUG を 1 にします。

ユーザIDの大文字・小文字を区別する

WebClassはユーザIDの大文字小文字を区別して扱いますが、LDAPの検索機能では区別しません。そこで、LDAPを参照したアカウント自動登録機能を利用している場合には、大文字小文字それぞれのユーザIDが作り分けられてしまうことがあります。

システムオプションの LDAP_USERID_CASECHECK を 1 にすることで、LDAP が大文字小文字を区別しないで結果を返していても、WebClass がユーザIDの大文字・小文字を区別したチェックをし直します。