轻型目录访问协议
轻型目录访问协议(英語:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。[1]
目录服务在开发内部网和与互联网程序共享用户、系统、网络、服务和应用的过程中占据了重要地位。[2]例如,目录服务可能提供了组织有序的记录集合,通常有层级结构,例如公司电子邮件目录。同理,也可以提供包含了地址和电话号码的电话簿。
LDAP由互联网工程任务组(IETF)的文档RFC定义,使用了描述语言ASN.1定义。最新的版本是版本3,由RFC 4511所定义。例如,一个用语言描述的LDAP的搜索如:“在公司邮件目录中搜索公司位于那什维尔名字中含有“Jessy”的有邮件地址的所有人。请返回他们的全名,电子邮件,头衔和简述。”[3]
LDAP的一个常用用途是单点登录,用户可以在多个服务中使用同一个密码,通常用于公司内部网站的登录中(这样他们可以在公司电脑上登入一次,便可以自动在公司内部网上登入)。[3]
概述
鉴于原先的目录访问协议(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属性包含值“[email protected]”;jpegPhotos属性一般包含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。
外部链接
- 软件
- 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红皮书
参考资料
- ^ Network Working Group RFC 4511. IETF.org. 2006-06-01 [2014-04-04]. (原始内容存档于2021-03-03) (英语).
- ^ Directory Services LDAP. Oracle.com. [2014-04-04]. (原始内容存档于2021-01-19) (英语).
- ^ 3.0 3.1 What is LDAP? (页面存档备份,存于互联网档案馆). Gracion.com. Retrieved on 2013-07-17.
- ^ LDAP - Lightweight Directory Access Protocol. Webopedia.com. [2014-04-05]. (原始内容存档于2020-08-12) (英语).