LDAP Studying Note
LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。
What is LDAP
LDAP是指轻量级目录访问协议,LDAP目录服务由目录数据库和一套访问协议组成
目录
目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样
目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。
LDAP的基本模型
概念
目录树
在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
条目
每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
对象类
与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来
属性
描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性
Acronym
DC domain component
域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)
UID user id
用户ID yuyang.zhang(一条记录的ID)
OU organization unit
组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“QA组”(一条记录的所属组织)
CN common name
公共名称,如“Joey Young”(一条记录的名称)
SN surname
姓,如“章”
DN distinguished name
“uid=yuyang.zhang,ou=QA组,dc=example,dc=com”,一条记录的位置(唯一)
RDN relative distinguished name
相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=yuyang.zhang”或“cn=Joey Young”
基本模型
信息模型
在LDAP中信息以树状方式组织,在树状信息中基本数据单元是条目,每个条目由属性组成,属性中存储有属性值
命名模型
LDAP的命名模型是条目定位方式,在LDAP中每个条目都有自己的DN,DN是该条目在整个树中的唯一名称标识,如同文件系统中,带路径的文件名就是DN
功能模型
在LDAP中共有四类10种操作:
-
查询类操作
搜索、比较
-
更新类操作
添加条目、删除条目、修改条目、修改条目名
-
认证类操作
绑定、解绑
-
其他操作
放弃、扩展操作
安全模型
LDAP的安全模型主要通过身份认证、安全通道和访问控制来实现
LDAP的使用
统一身份认证主要是改变原有的认证策略,使需要认证的软件都通过LDAP进行认证,在统一身份认证之后,用户的所有信息都存储在AD Server中。终端用户在需要使用公司内部服务的时候,都需要通过AD服务器的认证。
以PHP脚本作为例子:
1
|
$ldapconn = ldap_connect(“10.1.8.78")
|
- 连接LDAP服务器
- 绑定到LDAP服务器
- 在LDAP服务器上执行所需的任何操作
- 释放LDAP服务器的连接
LDAP Filter Note
运算符
- 等于(EQUAL TO): =
- 大于等于(Greater than): >=
- 小于等于(Less than): <=
- 通配符(wildcard): *
逻辑运算符
- 逻辑与(logical AND): &
- 逻辑或(logical OR): |
- 逻辑非(logical NOT): !
举例操作
以用户信息存储来举例,假设,用户目录树ou=user,dc=domain,结构如下:
1
|
dc=domain
|
用户信息属性如下:
1
|
cn=zhangsan
|
-
查询所有name为张三,sex为男的用户
(&(name=张三)(sex=男))
-
查询所有age不为28的用户
(!(age=28))
-
查询所有age为28,并且name不为张三的用户
(&(age=28)(!(name=张三)))
-
查询所有age为28,或者name为张三的用户
(|(age=28)(name=张三))
-
查询所有name的姓为张,或者desc包含描述的用户
(|(name=张*)(desc=*描述*))
-
查询所有有email为空的用户
(email=)
-
查询所有没有desc属性的用户
(!(desc=*))
-
查询所有有desc属性的用户
(desc=*)
- 在CPS中:
- 格式为:(&(objectClass=top)(cn=*******)(cn={login}))
- 必须加{login}来读取登录时带的信息,赋予给cn