作者:顽石1129_659 | 来源:互联网 | 2023-08-14 06:56
什么是LDAP?LDAP的全称是LightweightDirectoryAccessProtocol,轻量目录访问协议。划重点,LDAP是一个协议,约定了Clie
什么是LDAP? LDAP的全名是lightweightdirectoryaccessprotocol,轻量目录访问协会议。
重点是,LDAP 是一个协议约定了客户端与服务器之间的信息交换形式、使用的端口号、认证方式等内容。 另一方面,在LDAP 协议的实现中,Microsoft的Active Directory是LDAP在Windows上的实现,AD是LDAP所需的树数据库,具体是如何解析请求数据,从而实现数据例如,OpenLDAP是在Linux上运行的LDAP协议的开源实现。 我们通常所说的LDAP服务器,一般是指安装和配置了Active Directory、OpenLDAP等程序的服务器。
LDAP协议能解决什么问题? LDAP协议能解决什么问题,必须提到AD。 AD是Windows服务器上最强大的功能,AD是一套基于LDAP协议的解决方案(LDAP服务器APP应用程序),可解决细分权限控制。 核心:谁 以什么权限 访问什么
用户服务
管理用户的域帐户、用户信息、企业通信记录(与电子邮箱系统集成)、用户组管理、用户验证、用户授权管理、组管理策略按需实施等。 在Windows上,您拥有组策略管理器,可以通过启用域用户身份验证来统一管理这些组策略,从而轻松限制用户权限。
计算机管理
管理服务器和客户端计算机上的帐户,让所有服务器和客户端计算机参与域管理,并根据需要实施组策略。 您也可以控制计算机以禁止更改墙纸。 (什么? 在计算机上重新安装系统可以解除限制吗? 将无法访问所有域中的资源。 )
资源管理
管理打印机、文件共享服务、网络资源等并实施组策略。
应用系统的支持
为业务系统(如Exchange、Lync、SharePoint、MicrosoftCRM和ERP )提供数据验证(如身份验证、数据集成和组织规则)。 这里不仅可以集成微软产品,其他业务系统也可以通过通用接口的方式进行同样的嵌入。
为什么要使用LDAP协议? 由于历史原因,LDAP协议诞生于1988年,早于万维网的诞生。 1989年英国科学家tldbmh-一个沉默的小伙加入了网络。 因此,一直到现在。 树型用户目录、树型存储结构和组织管理建模非常直观。 开放的标准化协议得到了广泛的支持。 基于LDAP分解的什么叫轻量?
LDAP协议前面是X.500 DAP协议规范。 该协议非常复杂,是重量级协议,后来对X.500
经过简化,LDAP协议应运而生,与X.500相比重量更轻。 由于X.500 DAP - LDAP,实际上LDAP协议仍然很复杂。
什么叫目录?
目录是指用户目录,用户目录的长度如下所示:
复杂的是:
也有这样的:
目录服务是根据树状存储信息的模式。 目录服务的数据类型主要为字符型,而不是关系数据库提供的整数、浮点数、日期、货币等类型。 为了进行搜索,添加了语法(Syntax ),如sldtd (二进制数据)、CIS (忽略大小写)、CES (对大小写敏感)、TEL (电话类型)等。 也没有提供像关系数据库中一般包含的那样大量的函数。 目录具有强大的查询(读取)功能,适用于检索大量数据; 但是,目录通常只执行简单的更新(写)操作,不支持批量更新所需的事务功能; 主要是面向数据的查询服务,查询和变更操作比通常大于10:1,不提供事务回滚机制; 目录具有广泛的信息复制功能,适用于同步/更新多个目录服务器。
LDAP数据库的信息组织格式目录服务数据库以树形方式存储数据,也是NoSQL。 请注意,这推荐基本的数据存储方式。 使用树数据库存储有更好的好处,因为目录服务的查询远远多于写入。 但是,实际上像MySQL和MongoDB这样的数据库当做 LDAP 数据源LDAP只是协议,约定的是C/S之间的通信方式。 理论上,服务器只要能够处理所有LDAP协议中规定的操作并返回正确的结果即可。
专有名词在上面的用户目录中进行了说明,有很多英语缩写。 其实并不神秘,只是一些单词的缩写。 接下来说明专有名词。 在和LDAP交往的过程中,这些名词一定会频繁遭遇。
DIT(Directory Information Tree)目录信息树
ldapdirectoryserverspresentdata
arranged in tree-like hierarchies in which each entry may have zero or more subordinate entries. This structure is called the Directory Information Tree, or DIT.
LDAP 目录服务器将信息以树形的方式组织,每一项都可以包含 0 个或多个子项。这样的结构叫做目录信息树。
目录信息树可以类比我们的磁盘文件系统目录树,上面的定义是官方定义,理解起来,DIT 就是指像文件系统一样的目录结构树。
Entry 项
在用户目录中,你看到的每一行,都可以叫做一项,不论是叶子节点还是中间的节点。
项包含一个 DN,一些属性,一些对象类。
Root DSE(Root DSA-specific entry)根节点项
每个 LDAP 服务器必须对外暴露一个特殊的项,叫做 root DSE,这个项的 DN 是空字符串。这个项是根节点,描述了 LDAP 服务器自身的信息和能力。例如你可以在下图看到 LDAP 服务器支持的功能,LDAP 协议版本等信息。
dn(Distinguished Name)分辨名
dn 如下图白色方框中的内容,分辨名用于唯一标识一个项,以及他在目录信息树中的位置。可以和文件系统中文件路径类比。类似于关系型数据库中的主键。dn 字符串从左向右,各组成部分依次向树根靠近。
rdn(Relative Distinguished Name)相对分辨名
Rdn 就是键值对,如下图黄色方框中的内容。dn 由若干个 rdn 组成,以逗号分隔。
dc(Distinguished Name)(域名组成)
将 example.com 这样的域名,拆成 dc=example,dc=com 这样的形式。
o(Organization)组织机构、公司
在 dn 中可能会包含 o=公司 这样的组成部分,这里的 o 指代组织机构。
ou(Organization Unit)组织单元、部门
在 dn 中可能会包含 ou=某某部门 这样的组成部分,这里的 ou 指代组织单元。
Object Classes
每个项里面包含若干个 Object Classes,Object Class 指定了本项中必须、可能包含的属性,相当于 MySQL 中的建表语句。包含某个 Object Class 的项,必须满足 Object Class 中约定的规范。如下图,person objectClass 中规定了 cn 和 sn 属性必须存在,在这一项的属性中,你可以看到 cn 和 sn 被加粗显示了。
下图是 person Object class 的定义,规定了拥有此 Object class 的项需要拥有的属性:
总结
LDAP 协议是一个历史悠久的协议,诞生时间早于万维网。在当时商业数据库并不发达,而且当时商业数据库的驱动在多语言支持上也不友好——有可能这个数据库在你使用的编程语言上根本没有相关的开发包。LDAP 一直沿用至今,有很多的历史原因,因此许多应用都会支持通过 LDAP 登录。
LDAP 协议的用户目录是树形结构,天然与组织机构契合,而且在查询上速度非常快,比任何其他数据库都要快。
如果你想快速与 LDAP 服务器对接,不妨试一试 Authing 的 LDAP 对接功能。
只要填好 LDAP 服务器的信息,然后点击保存。
还能够方便地测试 LDAP 服务器的连通性和用户登录凭据的合法性。
然后就可以使用 LDAP 进行登录了。
示例应用:https://ldap-test.authing.cn
教程文档:https://docs.authing.cn/authing/authentication/ldap/ldap