LDAP——实现用户统一登录管理
一、是什么?
LDAP(Light Directory Access Protocol 轻量级目录访问协议),他是一种目录数据库存储方式。
像MySQL数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,将数据组织成一个「树形结构」,数据存储在叶子节点上。
1.1 LDAP数据库的信息组织形式,适用场景
它以「树形方式」存储数据。
- 他最大的优势就是有很强的查询(读)功能,适合于进行大量数据的检索。
- 它的不足就是只能执行简单的更新(写)操作,不支持批量更新所需要的事务处理功能。不过也没关系,因为它的使用场景就是多查询的场景。
1.2 一些名词解释
Entry 项
LDAP是以树形结构存储数据,每一个节点都被称为项。
dc(Domain Component)
dc就是域组织(可以把它当作关系型中的库)
比如将
http://zaq.test
这样的域名,可以拆成dc=zaq,dc=test
这样的形式。
dn(Distinguished Name)
它用于唯一标识一个「项」,以及他在目录信息树中的位置。(一条dn就类似于关系型数据库中的一条数据)
dn示例:
ou=group,dc=zaq,dc=test
、cn=dev,ou=group,dc=zaq,dc=test
dn 字符串从左向右,各组成部分依次向树根靠近。
rdn(Relative Distinguished Name)
Rdn 就是「键值对」。dn 由若干个 rdn 组成,以逗号分隔。
比如上面的dn中
dc=zaq
就是一个rdn
ou(Organization Unit)
在 dn 中可能会包含 ou=某某部门 这样的组成部分,这里的 ou 指代组织单元、部门。
Object Classes
每个「项」里面包含若干个 Object Classes,相当于是项的属性。(一条dn中的这些属性就类似于关系型数据库中一条数据的各个字段)
二、能干什么?
在开发过程中我们难免需要用到各种各样的开发工具,各个系统都有自己的一套密码,这就让我们很无奈,怎么记住呢?而且管理员在分配账户的时候也很头疼,团队每加入一个成员他就要在各个系统中为这个成员添加一个账户,管理起来非常麻烦。有没有一个统一管理多个系统的用户信息的东西呢?那就是LDAP。(它也可以实现单点登录)
总体目标:实现用户统一登录管理
LDAP的目的是为各种软件提供统一标准的认证机制,所有软件就可以不再用独有的用户管理方法,而是通过这种统一的认证机制进行用户认证。
- OpenLDAP 是可以运行在 Linux 上的 LDAP 协议的开源实现。
- 微软的 ActiveDirectory 是 LDAP在 Windows 上的实现。
- 只要支持LDAP协议的系统都能够集成LDAP实现统一的认证管理。
参考: