LDAP
Lightweight Directory Access Protocol
轻量目录访问协议
背景
X.500
目录服务(Directory Services)是一种信息存储和检索系统
可用于存储、组织和提供有关网络资源和对象的信息
这些资源和对象可以包括用户、组织、设备和应用程序等
可以简单理解为文件夹式的数据库
X.500是一组由国际电信联盟(ITU-T)制定的标准
是一套用于描述目录服务的框架
最初规划出来是为了在分布式计算环境中提供一种标准化的、全局可访问的目录服务
解决跨组织和地域的信息查询和服务定位问题
常用于用户身份验证、权限管理、电子邮件地址簿、网络资源定位等场景
定位有点像OSI之于TCP/IP一样,是一个仅供参考的模型
X.500标准系列定义了以下几个主要组件:
目录信息树(Directory Information Tree, DIT):目录服务的数据结构,像树一样,规定了数据在目录服务中该如何存储- 通过
目录条目(Directory Entries)表示对象 - 这些条目包含
属性(Attributes)和相应的值,比如organization: Microsoft - 每个条目具有一个唯一的
专有名称(Distinguished Name, DN),用于唯一标识目录中的对象。
- 通过
目录访问协议(Directory Access Protocol, DAP):定义了客户端如何与目录服务进行通信以访问、查询和修改目录数据的协议。DAP 是一个复杂的协议,基于 OSI(开放系统互联)的通信模型。目录系统代理(Directory System Agent, DSA):定义了目录服务器之间如何相互通信以交换和同步数据的协议。目录用户代理(Directory User Agent, DUA):用户与目录服务通信的客户端软件。
定义
LDAP是X.500标准系列中的一个子集,是一种X.500的简化版本
- LDAP能干什么?
- LDAP中的数据结构是怎样的?
概念
模式(Schema):目录中的数据结构声明,有点类似于头文件对象类型(objectClass):目录中条目的类型声明属性类型(AttributeType):条目中属性的类型声明
条目(Entry):目录中的对象,相当于树的节点,可以有多种类型专有名称(Distinguished Name, DN):条目的唯一标识,每个对象都有一个唯一的名称,如uid=tom,ou=market,dc=example,dc=com,在一个目录树中dn总是惟一的相对辨别名(Relative Distinguished Name, RDN):条目的相对名称,相当于相对路径,是dn的一部分属性(Attribute):对象的各种属性,每个属性对应一种属性类型和多个值- 常用属性
dc:域组件(Domain Component),用于表示域名的一部分,如dc=example,dc=comcn:通用名称(Common Name)ou:组织单位(Organizational Unit)o:组织(Organization)uid:用户ID(User ID)- ...
- 常用属性
软件
要知道,LDAP只是一个协议,具体的软件有很多种
服务端通常使用两个标准端口号:
- 非安全 LDAP(明文传输):默认端口号为 389
- 安全 LDAP 或 LDAPS(通过SSL/TLS加密的LDAP):默认端口号为 636
-
服务端
openldap-servers:开源的实现 LDAP 协议的软件,OpenLDAP几乎是最主流的LDAP服务端软件UnboundID:是一个用Java编写的LDAP软件开发工具包,主要是跟Spring LDAP开发有关ActiveDirectory、Domino Directory、WebSphere
-
客户端
openldap-clients,OpenLDAP的命令行工具LDAP Account Manager(LAM):功能完善,中文友好,依赖php的web管理界面

