目录
1 OpenLDAP简介
1.1 LDAP介绍
1、什么LDAP
LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于访问分布式目录服务的网络协议。它提供了一种标准化的方法来查询和操作目录中的信息,这些信息通常以树状结构组织,用于存储用户、组织和其他实体的数据。
2、为什么要使用LDAP
LDAP是开放的Internet标准,市场上或者开源社区的绝大多数软件都支持LDAP协议。简单来说,LDAP协议最大的好处就是能统一管理用户密码,如果有新人报道,只需要创建一个用户就能登录公司的所有平台(gitlab、jumpserver、监控等等),离职时一键删除即可。
3、LDAP 的特点
LDAP有如下特定:
- 1.目录结构:LDAP 目录是树状结构组织,每个节点称为条目(Entry),每个条目包含属性(Attributes)。
- 2.基于标准的协议:LDAP 遵循一系列 RFC(Request for Comments)文档,确保了不同系统间的兼容性和互操作性。
- 3.分层命名空间:LDAP 使用分层的命名空间(称为 Distinguished Names, DN),用于唯一标识目录中的每个条目。
- 4.搜索和访问控制:LDAP 提供了强大的搜索功能,允许用户根据属性值查询条目。同时,它支持复杂的访问控制机制,以保护目录数据的安全。
- 5.可扩展性:LDAP 支持通过添加新的条目和属性来扩展目录结构,同时保持向后兼容性。
4、LDAP常用关键字
- dn(Distinguished Name):区分名称,LDAP中每个条目都有自己的dn,dn是该条目在整棵树中的唯一标识,如同文件系统中,带路径的文件名就是DN。
- rdn(Relative dn):相对区别名称,好比linux中的相对路径。
- dc(Domain Component):域名组件。其格式是将完整的域名分成几部分,如将http://example.com变成dc=example,dc=com。
- uid(User ID):用户ID,如 san.zhang。
- ou(Organization Unit):组织单元。
- cn(Common Name):公共名称。
- sn(surname):姓氏。
- c(Country):国家,如“CN”或者“US”。
- o(Organization):组织名,如XXX银行,XXX部门,XXX公司等等。
这里把dn当做用户唯一主键, cn是common name,应该等同于用户名,因为用户名必须唯一,通常为邮箱前缀,比如ryan.miao. sn作为姓氏, uid作为用户id。通常用户id也是唯一的。所以在使用ldap做认证的时候,大概逻辑如下: - 配置ldap host, admin, admin pass
- 用户登录时传递username
- 读取配置的ldap信息,查询cn或者uid等于username的数据
- 取出第一个记录, 获得dn, 根据dn和password再次去ldap服务器认证。即必须保证cn或uid是全局唯一的
5、LDAP的objectClass
objectClass | 含义 |
---|---|
olcGlobal | 全局配置文件类型, 主要是cn=config.ldif 的配置项 |
top | 顶层的对象 |
organization | 组织,比如公司名称,顶层的对象 |
organizationalUnit | 重要, 一个目录节点,通常是group,或者部门这样的含义 |
inetOrgPerson | 重要, 我们真正的用户节点类型,person类型, 叶子节点 |
groupOfNames | 重要, 分组的group类型,标记一个group节点olcModuleList配置模块的对象 |
6、LADP使用场景
LDAP 通常用于以下场景:
- 身份验证:验证用户身份,允许或拒绝对系统资源的访问。
- 授权:管理用户权限,控制对目录数据的访问。
- 目录服务:存储和检索关于用户、组织结构和其他实体的信息。
- 单点登录(SSO):作为身份提供者