快速集成 LDAP,实现用户单点登录

什么是 LDAP

LDAP,Lightweight Directory Access Protocol,轻量级目录访问协议,它是一个工业标准应用协议,定义一个接口或语言为客户端连接到目录服务查询或修改信息,比如 OpenLDAP、Active Directory 等等。

一个 LDAP 服务一般存储关于用户、用户认证信息、组、用户成员等等,充当一个用户信息的中心仓库,通常使用为用户认证和授权。

你可以想象一个 LDAP 就是一个数据存储,支持客户端应用通讯使用 LDAP 协议,包含两个方面,分别是目录和协议。

LDAP 目录结构

一个 LDAP 目录有一个层级树状结构,由一个或更多的条目组成,这些条目一般代表一个真实世界的条目,比如组织、用户等等。对于一个企业而言,举个例子,这个树的根(顶层)能代表一个组织它自己,子条目可以为组织、商业单位、位置等,这些子条目能支持更多条目代表个体资源,比如用户、组等等,如下图所示:

术语解析及例子

下面创建一个真实的目录便于理解,数据使用一个学校,如下图:

在顶层你能看到一个 dc=hogwarts, dc=com,使用它来代表整个学校,它有一个子条目,代表为一个组织单元 ou=users,它有很多子条目,比如 cn=triddle 来代表学生。

在上图中,我们能忽略其中顶级条目 ou=config, ou=schema, ou=system,因为他们关系到这个目录它自己的 schema 和 config,是来自于安装后的默认配置。

Entry(条目):每个对象在目录中被叫做一个 LDAP 条目,例如:ou=users,cn=triddle。

Attribute(属性):每个entry 典型的有一个或更多的属性被使用来描述对象,比如姓,名,邮箱,商业单位等等。

LDAP 规范定义一个标准属性设置,比如 cn,sn,mail,objectClass 等等,对于我们的例子,让我们从上面的描述,拿用户 Tom Riddle 来举例,下面是这个用户的属性:

dn: cn=triddle, ou=users, dc=hogwarts, dc=com
objectClass: organizationalPerson
objectClass: person
objectClass: inetOrgPerson
objectClass: top
cn: triddle
sn: Riddle
displayName: Tom Riddle
givenName: Tom
mail: Tom.Riddle@hogwarts.edu
uid: 20007
userPassword: SHA hashed password

正如你所看到的,它包含一些基本的个人信息和用户的密码。

Distinguished Name or DN

在 LDAP 中识别一个条目,我们使用 Distinguished Name or dn,这个dn在一个目录中是全局唯一的,它的值是目录树中一个对象的位置,它可以被“连接”为当前条目名字和它的父节点一直到顶层(根)节点的条目“相加”。对上述已被列出的用户 Tom Riddle 而言,它的 DN 将会是:

"cn=triddle" + "ou=users" + "dc=hogwarts, dc=com"
DN:cn=triddle, ou=users, dc=hogwarts, dc=com

用户认证

基于 LDAP 做一个认证同样也需要用户名和密码,在这个案例描述中用户名就是 LDAP 中的 DN,因此,假设用户 Tom Riddle 的密码为 123456,你将使用如下方式认证成功:

username: cn=triddle, ou=users, dc=hogwarts, dc=com
password: 123456

如何在 Authing 身份云上使用 LDAP ?

在 Authing 身份云我们已经为您集成了 LDAP 协议,只需要一键开启 LDAP,您不仅可以通过 LDAP 协议来管理您云上的用户信息,还可以为您的用户使用 LDAP 协议无缝衔接其他支持 LDAP 协议的平台,进行例如认证、授权等操作。

开启方法

首先使用账户密码登录 Authing 平台,然后点击主界面–用户管理–右上角点击开关–开启,如下图:

**是不是很简单?**开启后即可使用 LDAP 协议来管理用户,功能都已经集成,例如认证、过滤、增、删、改、查等。

常见搜索 dn 地址数据结构如下:

14

下面以查询功能举例,如下图:

15

-H    LDAP server URI,包含地址及端口,所有用户都是这个地址
 -D    bind dn,指定服务器用于认证您的专有名称                       
 -w    用户池密码
 -LLL  指定以 LDIF 格式输出,不用注释和版本
 -b    base dn,如果要搜索的服务器需要指定搜索起点,则必须使用此参数,否则该参数是可选的
 -x    简单认证

其他帮助文档请登录 Authing 身份云,点击主界面–用户管理–使用文档,以便查看更多帮助。