轻量级目录访问协议

**輕型目錄存取協定**（英文：**Lightweight Directory Access Protocol**，縮寫：**LDAP**，/ˈɛldæp/）是一個開放的，中立的，工業標準的應用協定，通過 IP 協定提供存取控制和維護分散式資訊的目錄資訊。

目錄服務在開發內部網路和與網際網路程式共享使用者、系統、網路、服務和應用的過程中占據了重要地位。例如，目錄服務可能提供了組織有序的記錄集合，通常有層級結構，例如公司電子郵件目錄。同理，也可以提供包含了位址和電話號碼的電話簿。

LDAP 由網際網路工程任務組（IETF）的文件 RFC 定義，使用了描述語言 ASN.1 定義。最新的版本是版本 3，由 RFC 4511 所定義。例如，一個用語言描述的 LDAP 的搜尋如：「在公司郵件目錄中搜尋公司位於那什維爾名字中含有「Jessy」的有郵件位址的所有人。請返回他們的全名，電子郵件，頭銜和簡述。」

LDAP 的一個常用用途是單一登入，使用者可以在多個服務中使用同一個密碼，通常用於公司內部網路站的登入中（這樣他們可以在公司電腦上登入一次，便可以自動在公司內部網路上登入）。

LDAP 基於 X.500 標準的子集。因為這個關係，LDAP 有時被稱為 X.500-lite。

## 概述

鑑於原先的目錄存取協定（Directory Access Protocol 即 DAP）對於簡單的網際網路客戶端使用太複雜，IETF 設計並指定 LDAP 做為使用 X.500 目錄的更好的途徑。LDAP 在 TCP/IP 之上定義了一個相對簡單的升級和搜尋目錄的協定。

常用詞 "LDAP 目錄" 可能會被誤解，而實際並沒有 "LDAP 目錄" 這麼一個目錄種類。通常可以用它來描述任何使用 LDAP 協定存取並能用 X.500 識別碼標識目錄中物件的目錄。與 ISODE 提供的 X.500 協定的閘道器相比，儘管 OpenLDAP 及其來自密西根大學的前身等的目錄基本上設計成專門為 LDAP 存取而最佳化的，但也沒有比其他用 LDAP 協定存取的目錄額外多出來所謂「LDAP 目錄」。

協定的第三版由 Netscape 的 Tim Howes，ISODE 的 Steve Kille 和 Critical Angle Inc 的 Mark Wahl 撰寫。

## 協定內容

LDAP 目錄的條目（entry）由屬性（attribute）的一個聚集組成，並由一個唯一性的名字參照，即**專有名稱**（**distinguished name**，DN）。例如，DN 能取這樣的值：「ou=people,dc=wikipedia,dc=org」。

```
         dc=org
 
      |dc=wikipedia
       /          \
 ou=people     ou=groups
```

LDAP 目錄與普通資料庫的主要不同之處在於資料的組織方式，它是一種有層次的、樹形結構。所有條目的屬性的定義是**物件類 object class** 的組成部分，並組成在一起構成 schema；那些在組織內代表個人的 schema 被命名為 white pages schema。資料庫內的每個條目都與若干物件類聯絡，而這些物件類決定了一個屬性是否為可選和它儲存哪些類型的資訊。屬性的名字一般是一個易於記憶的字串，例如用 cn 為通用名（common name）命名，而 "mail" 代表 e-mail 位址。屬性取值依賴於其類型，並且 LDAPv3 中一般非二進位值都遵從 UTF-8 字串語法。例如，mail 屬性包含值「user@example.com」；_jpegPhoto_s 屬性一般包含 JPEG/JFIF 格式的圖片。

LDAP 目錄條目可描述一個階層，這個結構可以反映一個政治、地理或者組織的範疇。在原始的 X.500 模型中，反應國家的條目位於樹的頂端；接著是州或者民族組織。典型的 LDAP 組態使用 DNS 名稱作為樹形結構的頂端，下列是代表人、文件、組織單元、印表機和其他任何事務的條目。

LDAP 影響了後續的 Internet 協定，包括新版本的 X.500、Directory Services Markup Language (DSML)、Service Provisioning Markup Language (SPML) 和 Service Location Protocol.

## RFC

* RFC 1777 - LDAPv2
* RFC 1778 - LDAPv2 String Representation of Standard Attribute Syntaxes
* RFC 1959 - URL Format
* RFC 1960～RFC 2254 - String Representation of LDAP Search Filters
* RFC 1823 - C API
* RFC 2247 - Use of DNS domains in distinguished names
* RFC 2251 - LDAPv3: The specification of the LDAP on-the-wire protocol
* RFC 2252 - LDAPv3: Attribute Syntax Definitions
* RFC 2253 - LDAPv3: UTF-8 String Representation of Distinguished Names
* RFC 2254 - LDAPv3: The String Representation of LDAP Search Filters
* RFC 2255 - LDAPv3: The LDAP URL Format
* RFC 2256 - LDAPv3: A Summary of the X.500 (96) User Schema for use with LDAPv3
* RFC 2829 - LDAPv3: Authentication Methods for LDAP
* RFC 2830 - LDAPv3: Extension for Transport Layer Security
* RFC 3377 - LDAPv3: Technical Specification
* RFC 2307 - Using LDAP as a Network Information Service

## 產品

LDAP 從下面廠商獲得廣泛支援：

* Apache（通過 Apache 目錄伺服器）
* Apple（通過 Open Directory）
* AT&T
* Banyan
* HP
* IBM/Lotus
* ISODE（通過 M-Vault server）
* Microsoft（通過 Active Directory）
* Netscape（現在是 Sun Microsystems 和 Red Hat 的產品）
* Novell（通過 eDirectory）
* OctetString（通過 VDE 伺服器）
* Oracle（通過 Oracle Internet Directory）
* Red Hat（通過 Fedora 目錄伺服器 （頁面存檔備份，存於網際網路檔案館））
* 西門子公司（通過 DirX 伺服器）
* Sun（通過 iPlanet 目錄伺服器）

此外還有開源 / 自由軟體的實現 —— 如 OpenLDAP
Apache HTTP Server 使用代理伺服器（通過模組 mod\_proxy）支援 LDAP。

## 外部連結

* 軟體
  * OpenLDAP （頁面存檔備份，存於網際網路檔案館）
  * Novell eDirectory （頁面存檔備份，存於網際網路檔案館）
  * Sun 目錄伺服器 （頁面存檔備份，存於網際網路檔案館）
  * Windows Server 2003 Active Directory （頁面存檔備份，存於網際網路檔案館）
  * EDS 管理工具 （頁面存檔備份，存於網際網路檔案館）
  * 自由的 Win32 LDAP 客戶端
* Linux LDAP HOWTO （頁面存檔備份，存於網際網路檔案館）
* LDAP 文章、連結和白皮書 （頁面存檔備份，存於網際網路檔案館）
* LDAP 軟體和工具 （頁面存檔備份，存於網際網路檔案館）
* LDAP (v3) Revision (ldapbis) Working Group
* _What is LDAP?_ （頁面存檔備份，存於網際網路檔案館）
* Nice Neat 範例介紹 LDAP
* Using OpenLDAP - 在 Debian GNU/Linux 安裝 OpenLDAP （頁面存檔備份，存於網際網路檔案館）
* LDAP Linux 鑒權 - 將 LDAP 整合到 PAM （頁面存檔備份，存於網際網路檔案館）
* C#LDAP 庫 （頁面存檔備份，存於網際網路檔案館）。
* 火箭科學家的 LDAP （頁面存檔備份，存於網際網路檔案館）
* PerLDAP 1.4 的 LDAP 實現 （頁面存檔備份，存於網際網路檔案館）
* The importance of LDAP Tom Jackiewicz 關於 LDAP 的說明
* 了解 LDAP - 設計與實現 （頁面存檔備份，存於網際網路檔案館）IBM 紅皮書

## 參考資料