LDAP とは?
皆さんはLDAP(Lightweight Directory Access Protocol)という言葉をご存知でしょうか。
LDAPはディレクトリサービスに使用されるプロトコルの一種で、ユーザの認証に使わることが多いです。
色々なソフトウェアで利用されていますが、MicrsoftのActiveDirectoryが有名ですね。
なぜLDAP
クラスアクトの色々なサービス(メール、チャット、動画(seetube))でLDAPによる認証が行われています。
クラスアクトのユーザ情報はAD(Active Directory)で管理されているので、サービスごとに認証情報を持たせるのではなく、ADで認証することでユーザ管理の手間を一元化しています。
厳密には、ADとLDAPは異なるものですが、ADをLDAPサーバとして使用しています。
先日動画(Seetube)サーバを構築したときに、LDAPによる認証がうまくいかず、ldapsearchを使用してユーザ情報の管理構造(スキーマ)を確認したのですが、加齢の影響か、すっかり記憶からなくなっていました。
なので、今回確認したところをここに記録し、またネタの水増しを図りたいと思います。
ldapsearch って?
LDAPサーバにアクセスし、LDAPサーバの情報を取り出すことができるソフトウェアです。
ほとんどのLinuxで使用できます。
使ってみましょう。
CAの執務室セグメント(192.168.2.0/24)にある適当なLinuxサーバから下のコマンドを実行します。
ldapsearch -h 10.8.7.2 -D "manager@classact.co.jp" -w "secret" -b "CN=Users,dc=classact,dc=co,dc=jp"
上の例だと、10.8.7.2がLDAPサーバのIPアドレス
CN=Users,dc=classact,dc=co,dc=jpがバインドDNで、CN=Usersの中にユーザの認証情報が入っています。
manager@classact.co.jp external_link はADの閲覧権限を持つユーザの名前@ドメインです。やってみる場合はADのユーザ名@classact.co.jpで行けると思います。
secret はこの場合だとmanager@classact.co.jp external_linkのADパスワードです。パスワードをコマンドに埋めたくない場合(コマンド実行履歴に残る)は -W に変更すると、対話的にパスワードを聞いてくれます。
実行すると、大量の文字列がターミナルに流れてきますが、これはADに登録されているすべてのユーザ情報です。
こういう場合は出力を絞るのですが、このようにしてコマンドを実行します。
ldapsearch -h 10.8.7.2 -D "manager@classact.co.jp" -w "secret" -b "CN=Users,dc=classact,dc=co,dc=jp" "(sAMAccountName=nishitani-daisuke)"
この例だと、ユーザ情報中のsAMAccountNameがnishitani-daisukeであるユーザの情報を表示します。
sAMAccountName はADのユーザ名と同じです。
LDAP(AD)のスキーマについては、いろいろとカスタマイズしているケースがありますので、すべてのLDAP(AD)で同じようにできるとは限りませんが、LDAPの疎通確認は、スキーマ構造のチェックなどには有用なツールかと思います。
以上。