LDAP (Lightweight Directory Access Protocol) とは、ディレクトリサービスにアクセスするための軽量ディレクトリアクセスプロトコルです。
ITU-T (International Telecommunication Union Telecommunication Standardization Sector) 勧告のX.500では,ディレクトリの利用者であるDUA(Directory User Agent)とディレクトリサービスを提供するDSA(Directory System Agent)とのあいだで情報を交換するための通信プロトコルとして,DAP(Directory Access Protocol)が規定されている。
しかし,DAPはインターネットで利用するにはオーバーヘッドが大きすぎることから,IETF (Internet Engineering Task Force) がX.500に準拠してインターネット上で利用できるように軽い通信プロトコルを策定した。これが,RFC1777で提唱されているLDAP(Lightweight Directory Access Protocol)である。
LDAPは,TCP/IP経由でディレクトリ管理システムにアクセスするときに使用され,DAPの提供する機能のほとんどを低コストで実現できるように開発されている。
レイヤ | プロトコル |
---|---|
アプリケーション層 | LDAP |
トランスポート層 | TCP |
インターネット層 | IP |
LDAPの実装には次のものがある。
LDAPS (LDAP over over SSL/TLS) とは、TLSまたはSSLを使用して、LDAPクライアントとLDAPサーバ間の通信を保護するプロトコルである。
レイヤ | プロトコル |
---|---|
アプリケーション層 | LDAPS |
TLS | |
トランスポート層 | TCP |
インターネット層 | IP |
LDAPS (LDAP over SSL/TLS) はTCP/IPのポート番号646を使う。
プロトコル | ポート番号 |
---|---|
LDAP | 389 |
LDAPS | 636 |
LDAPを通じてディレクトリ・サービスへアクセスする際に、アクセス対象を特定するために識別名(DN)を指定する。
識別名は、属性と値の組み合わせをカンマで区切って表わしたものである。
"cn=tsuka,ou=sales1,ou=sales,dc=segakuin,dc=com"
どのような属性があるかは、ディレクトリ・サービスによって異なる。
X.500の場合、次に示す属性が定義されている。
String | X.500 AttributeType |
---|---|
CN | commonName |
L | localityName |
ST | stateOrProvinceName |
O | organizationName |
OU | organizationalUnitName |
C | countryName |
STREET | streetAddress |
DC | domainComponent |
UID | userId |
LDAPクライアントとLDAPサーバの間で認証情報を交換する操作をバインドと呼ぶ。バインドを行うと、LDAPサービスの利用が可能になる。
認証情報をLDAPサーバに問い合わせるときに使うユーザをバインドDNと呼ぶ。
LinuxからLDAPサーバにバインドして検索を行うには、ldapsearchコマンドを使う。ただし、デフォルトでインストールされていないことがある。
DebianやUbuntuの場合、LDAPユーティリティのインストールは次のようにして行う。
$ sudo apt install ldap-utils
IETF (2006) RFC4510 Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map
IETF (2006) RFC4511 Lightweight Directory Access Protocol (LDAP): The Protocol
IETF (2006) RFC4513 Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms
IETF (2006) RFC4514 Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names