LDAP的简介:
LDAP:Lightweight Directory Access Protocol,LDAP支持TCP/IP;
从本质上来说,LDAP是一个目录,也可以看成一个弱数据库;
目录里每个Index是一条记录,这些记录以树形结构,存储在不同的叶子上;
LDAP = OU(树) + DN[区分名(DN,Distinguished Name)叶子,每个dn独一无二];
LDAP的目的是快速响应查找需求,并不常用写<写较弱>,通常作为【统一认证解决方案】被利用;
最为成功的应用对象是Microsoft的AD(Activity Domain)域,每台设备相当于一个叶子,由管理员统一管理;
局域网应用1.单点登录(用户管理);
局域网应用2.局域网资源统一管理;
OpenLDAP的架构:
0.基于TCP/IP的应用层协议 默认端口389 加密端口636(如OpenLDAP服务进程)
1.客户端发送命令,服务器端响应
1.0 应定义可接续客户端列表(LDAP-Clients Accesslist)
2.目录主要操作
2.0 用户验证(bind操作)
2.1 添加节点
2.2 更新节点
2.3 移动节点
2.4 删除节点
2.5 节点搜索
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑<LDAP Service>↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
3.节点类型
3.0 节点属性规范(SCHEMA)
4.节点
4.0 目录里的对象
4.1 属性即是节点的数据
4.2 目录中通过DN(Distinguished Name)唯一标识(可以认为是路径)
4.2.0 节点DN = RDN(Relative Distinguished Name) + 父节点的DN
4.3 目录是TREE结构,节点可以有子节点,也可以有父节点
5.节点唯一标识DN说明
5.0 示例: dn:CN=John Doe,OU=Texas,DC=example,DC=com
5.1 从右到左 根节点 -> 子节点
5.2 DC:所在控制域 OU:组织单元 CN:通用名称
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑<结点 DN 也成Entry>↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
6.属性
6.0 同一个属性可以有多个值
6.1 包含属性名称,属性类型
6.1.0 属性具有:
Syntax Rule,语法定义(例如:Directory String);
Typically Size,典型大小(例如:caseIgnoreMatch);
Single/Multi,Entry下是否可以有多个此属性;
Matching Rule,属性比较大小的规则;
Constraint,属性约束条件(是否为主键);
Object Class,属性所属的对象;
以上,在Directory Schema规定。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑<Attribute>↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
7.目录规范(SCHEMA)
7.0 目录节点相关规则
7.1 Attribute Syntaxes
7.2 Matching Rules
7.3 Matching Rule Uses
7.4 Attribute Types
7.5 Object Classes
7.6 Name Forms
7.7 Content Rules
7.8 Structure Rule
LDAP的使用:
软件openLDAP,开源,http://www.openldap.org;
1.安装,配置:
省略;
2.数据操作:
添加数据=>
(1)使用ldif(LDAP目录交换格式)文件;
(2)文件内,每条记录,使用空行分开:
第一行:dn: xxxxx,必须定义顶级区分名;
第二行->第n行:属性:值;
(3)命令行添加内容:
ladapadd -D "区分名dn" -w 密码< 文件.ldif
如远程修改,添加-h 主机名;-p 端口名(一般6005);
部分情况需要追加-x,否则添加失败;
-v,输出运行情况;
ldapadd -x -h localhost -p 6005 -w 密码 -D cn=root -v -f 文件名.ldif
(4)命令行查询内容:
查询某个区分名的所有数据,ldapsearch 区分名=值
查询根的所有区分名,ldapsearch '(&(条件1)(ou=根名))' dn
如远程修改,添加-h 主机名;-p 端口名(一般6005);
ldapsearch -x -LLL -h localhost -p 6005 -w 密码 -D cn=root -b dc=xx "(|(条件1))" "属性名+空格+属性名"
dc,条目(多个属性的集合)所属的完整路径;