LDAP (Lightweight Directory Access Protocol)

LDAP (Lightweight Directory Access Protocol) とは、ディレクトリサービスにアクセスするための軽量ディレクトリアクセスプロトコルです。

LDAPとは

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とは

LDAPS (LDAP over over SSL/TLS) とは、TLSまたはSSLを使用して、LDAPクライアントとLDAPサーバ間の通信を保護するプロトコルである。

プロトコルスタック
レイヤ プロトコル
アプリケーション層 LDAPS
TLS
トランスポート層 TCP
インターネット層 IP

ポート番号

LDAPはTCP/IPのポート番号389を使う。

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の場合、次に示す属性が定義されている。

X.500 AttributeType
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と呼ぶ。

ldapsearch

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