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管理界面
使用
openldap-clients
| Option | 说明 |
|---|---|
| -H | ldapuri,格式为ldap://机器名或者IP:端口号,不能与-h和-p同时使用 |
| -h | LDAP服务器IP或者可解析的hostname,与-p可结合使用,不能与-H同时使用 |
| -p | LDAP服务器端口号,与-h可结合使用,不能与-H同时使用 |
| -x | 使用简单认证方式 |
| -D | 所绑定的服务器的DN |
| -w | 绑定DN的密码,与-W二者选一 |
| -W | 不输入密码,会交互式的提示用户输入密码,与-w二者选一 |
| -c | 出错后忽略当前错误继续执行,缺省情况下遇到错误即终止 |
| -n | 模拟操作但并不实际执行,用于验证,常与-v一同使用进行问题定位 |
| -v | 显示详细信息 |
| -d | 显示debug信息,可设定级别 |
| -e | 设置客户端证书 |
| -E | 设置客户端私钥 |
权限控制
Linux 安装并配置 OpenLDAP 新编(5)访问控制
WIP...

