LDAPはX.500対応のディレクトリは分散DBと言ってもよいもので、データベースの知識が少しだけ必要です。このデータベースは階層構造を想定していることも念頭に置いておくと理解しやすくなります。
まずLDAPを使うには、LDAPがアクセスするディレクトリのスキーマを理解しておかなければなりません。スキーマとはディレクトリに格納できるデータを記述した規則の集合です。それには属性やオブジェクトクラスが定義されています。例えば、「個人情報を含むエントリには名前と電話番号とメールアドレスなどの属性があり、名前は入力が必須である」などの規則です。くわしく勉強したければ、データベースの本を読んで学んで下さい。
LDAPで扱われるエントリを識別するための属性には以下のようなものがあります。
CN | 名前 (Common Name) |
OU | 組織内の部や課(Organization Unit Name) |
O | 組織名(Organization Name) |
ST | 州あるいは県、地方名(State or Province Name) |
C | 国名(Country name) |
これらの情報を指定すればあるエントリを特定することができます。あるエントリを指定するための識別名 (Distinguished Name: DN)を表すのに使うのはこれらの属性です。この属性の構造からエントリは階層に管理されることを想定していることがわかります。ある国の中の、ある県の、ある組織の、ある人というふうにエントリを指定してすることができます。
このような属性の他に、電話番号やメールアドレスなども格納することができます。格納できる属性をいくつかあげます
メールアドレス | |
telephoneNumber | 電話番号 |
userCertificate | ユーザ証明書 |
この他にもいろんな情報をエントリに追加することができますが、これらを登録しておけば、検索する人に情報を提供することができるのです。
LDAPでも情報を登録したり、検索したりする場合のアクセスコントロールが必要です。勝手に情報を登録されたり更新されては困るからです。UNIXなどでは際にIDとパスワードを入力してログインするという動作で認証を行います。LDAPでは、DN(識別名)とパスワードを指定して登録などの操作を行うことによってアクセス制限を行います。このように行う処理とDNを結びつけるので、これをバインドとよびます。普通は登録では管理用のDNとのバインドが必要ですが、検索ではDNを指定せず匿名バインド(anonymous bind)でアクセスします