信息模型
信息指存储在 Directory 中的内容。 LDAP 中最基础的信息单元是条目,存储的结构是一个树形的结构。
LDAP 中的信息可以归纳为“条目、属性、值”三类
每一个 条目都有一个标示名( DN ),这是根节点,上图的 DN 是 dc=example,dc=com 。每一个条目由一个属性和值组成。dc类似于表名?
属性有语法和匹配规则,语法标明对应与属性的值是什么类型,( INTEGER 、 DirectoryString 、 OID 、 GeneralizedTime 等)。匹配规则指的是这个属性如何比较和排序规则,比方说 caseIgnoreMatch 就是大小写无关比较、排序,integerMatch 就是按整数形式比较、排序等。
属性分两类,用户态属性和操作态属性。用户态属性是用户能修改的属性,而操作态属性一般是 Directory 自己管理的。
属性可以加上一个限制就是这个属性允不允许唯一性,一般是通过设定这个属性是否允许 Multi 来设置。有些 Directory 甚至允许管理员设定属性对应的值的最大长度。
Directory 的 schema 和数据库的 schema 不一样,没有数据库的 schema 要求的那么严格,有一个 Required Attributes 和 Allowed Attributes 的限制, Required Attributes 是要求对象必须有个属性。
命名模型
1 、 dn:dc=example,dc=com
2 、 dn:ou=people, dc=example,dc=com
3 、 dn:uid=jtower, ou=people, dc=example,dc=com
可以通过多个属性值对来唯一确定一个条目:
cn=John Smith + mail=jsmith@example.com
如果值里面还有特殊字符,如( space ; # ; , ; + ; ” ; \ ; < ; > ; ; )都需要加转义符 \
LDAP 支持别名( alias ),类似于链接
功能模型
- 查询操作
查询操作包含 8 个参数
1、 Base object 基础对象(从那棵树的那个节点开始查)
2、 scope 查询范围
base 就查询本节点
onelevel 就查询本节点的下一级节点
sub 查询本节点一下含本节点
3、 Alias Dereferencing Options 别名废弃
4、 Size Limit ,返回多少条记录
5、 Time Limit ,返回记录的 timeout
6、 Attributes-Only Parameter ,只返回属性,不返回值
7、 Search Filter ,过滤条件
相等操作: sn=smith
部分字符串操作: sn=smith* 、 sn=*smith 、 sn=smi*th 、 sn=*smith*
近似操作: sn~=jensen ,有可能返回 jenson 等,不同的系统支持可能不一样
大于等于和小于等于: sn<=Smith 、 age>=21 、 age>21
存在操作: telephoneNumber=* ,返回存在 telephoneNumber 的记录
扩展操作
否定操作: (!(sn=smith)) , sn 不等于 smith
组合操作: (&(sn=smith)(L=MountainView)) 、 (|(sn=Smith) (sn=Jones)) 、 (&(mail=*)(!(telephoneNumber=*)))
8、 List of Attributes to Return ,返回哪些属性
cn, sn, givenName
*
*, modifiersName
- 更新操作
增加、删除、改名、修改
- 认证控制操作
Bind 、 unbind 、 abandon (取消操作,当一个大的查询发起的时候,可以会发起一个 abandon 操作中断查询)