0

LDAP协议(轻量目录访问协议)简介

 2 years ago
source link: https://syxdevcode.github.io/2022/04/17/LDAP%E5%8D%8F%E8%AE%AE%EF%BC%88%E8%BD%BB%E9%87%8F%E7%9B%AE%E5%BD%95%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE%AE%EF%BC%89%E7%AE%80%E4%BB%8B/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

LDAP 的全称是 Lightweight Directory Access Protocol,「轻量目录访问协议」,它是基于X.500标准的轻量级目录访问协议。

目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。
目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。

LDAP 「是一个协议」,约定了 Client 与 Server 之间的信息交互格式、使用的端口号、认证方式等内容。

LDAP的基本模型

目录树概念

    1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
    1. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
    1. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
    1. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

DIT(Directory Information Tree)目录信息树
LDAP 目录服务器将信息以树形的方式组织,每一项都可以包含 0 个或多个子项。这样的结构叫做目录信息树。

Entry 项
在用户目录中,看到的每一行,都可以叫做一项,不论是叶子节点还是中间的节点。

v2-7d18c62141bea796afdc66713ff47765_720w.jpg

项包含一个 DN,一些属性,一些对象类。

v2-ebca130763dabaafaf41c92eef0406f5_720w.jpg

Root DSE(Root DSA-specific entry)根节点项
每个 LDAP 服务器必须对外暴露一个特殊的「项」,叫做 root DSE,这个项的 DN 是空字符串。这个项是根节点,描述了 LDAP 服务器自身的信息和能力。例如你可以在下图看到 LDAP 服务器支持的功能,LDAP 协议版本等信息。

v2-7cb7860f9a897cc78ebb68b09fc9c58e_720w.jpg

dn(Distinguished Name)分辨名
dn 如下图白色方框中的内容,「分辨名」用于唯一标识一个「项」,以及他在目录信息树中的位置。可以和文件系统中文件路径类比。类似于关系型数据库中的主键。dn 字符串从左向右,各组成部分依次向树根靠近。

v2-528f3a7814a9e63ba6883d36eca3dd6a_720w.jpg

rdn(Relative Distinguished Name)相对分辨名
Rdn 就是「键值对」,如下图黄色方框中的内容。dn 由若干个 rdn 组成,以逗号分隔。

v2-528f3a7814a9e63ba6883d36eca3dd6a_720w.jpg

dc(Domain Component)(域名组成)
example.com变成dc=example,dc=com(一条记录的所属位置)

o(Organization)组织机构、公司
在 dn 中可能会包含 o=公司 这样的组成部分,这里的 o 指代组织机构。

uid (User Id)
用户ID songtao.xu(一条记录的ID)

ou(Organization Unit)组织单元、部门
在 dn 中可能会包含 ou=某某部门 这样的组成部分,这里的 ou 指代组织单元。

Object Classes
每个「项」里面包含若干个 Object Classes,「Object Class」 指定了本项中必须、可能包含的「属性」,相当于 MySQL 中的建表语句。包含某个 Object Class 的项,必须满足 Object Class 中约定的规范。如下图,「person objectClass」 中规定了 cn 和 sn 属性必须存在,在这一「项」的属性中,你可以看到 cn 和 sn 被加粗显示了。

v2-ebca130763dabaafaf41c92eef0406f5_720w(1).jpg

下图是 person Object class 的定义,规定了拥有此 Object class 的「项」需要拥有的属性:

v2-dd88c919ea49ff23bd7ea5e0547833e8_720w.jpg

LDAP的主要产品

LDAP仅仅是一个访问协议,数据存储各厂商的详细表:

  • Microsoft

产品:Microsoft Active Directory

基于WINDOWS系统用户,对大数据量处理速度一般,但维护容易,生态圈大,管理相对简单。

产品:SUNONE Directory Server

基于文本数据库的存储,速度快。

产品:IBM Directory Server

基于DB2 的的数据库,速度一般。

  • Novell

产品:Novell Directory Server

基于文本数据库的存储,速度快, 不常用到。

  • Opensource

产品:Opensource

OpenLDAP 开源的项目,速度很快,但是非主 流应用。

LDAP协议解决的问题

管理用户的域账号、用户信息、企业通信录(与电子邮箱系统集成)、用户组管理、用户身份认证、用户授权管理、按需实施组管理策略等。在 Windows 下,有组策略管理器,如果启用域用户认证,那么这些组策略可以统一管理,方便地限制用户的权限。

计算机管理

管理服务器及客户端计算机账户、所有服务器及客户端计算机加入域管理并按需实施组策略,甚至可以控制计算机禁止修改壁纸。(什么?给电脑重装系统就能解除限制?那么所有域上的资源都会无法访问了。)

管理打印机、文件共享服务、网络资源等实施组策略。

应用系统的支持

对于电子邮件(Exchange)、在线及时通讯(Lync)、企业信息管理(SharePoint)、微软 CRM,ERP 等业务系统提供数据认证(身份认证、数据集成、组织规则等)。这里不单是微软产品的集成,其它的业务系统根据公用接口的方式一样可以嵌入进来。

LDAP概念和原理介绍

LDAP 协议入门(轻量目录访问协议)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK