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=testcn=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实现统一的认证管理。

这里是OpenLDAP的安装与集成第三方系统教程>>>

参考:

  • https://zhuanlan.zhihu.com/p/445690193
  • https://zhuanlan.zhihu.com/p/147768058
  • https://blog.csdn.net/joeybrown/article/details/118027917
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐