Open LDAP 系列1 --- 认识Open LDAP

Open LDAP 系列

一、Directory and Directory Service(目录和目录服务)

1. 目录

目录是一种用于存储描述性的,基于属性的,且支持复杂查询的数据结构。“描述性的”是指目录存储的数据不会太长,这与关系型数据库和No-SQL有不同;“基于属性的”这点类似于No-SQL;“支持复杂查询”类似于搜索引擎,是指查询条件和组合多样化,支持搜索,且在并发量高的情况下需要保证其查询高效性和可用性。

总结起来,一个目录系统其实一种专门为查询而优化的数据库系统。

2. 目录服务

Authentication是提供目录查询和更新的服务,不过它更侧重于查询和搜索。

二、Open LDAP

1. LDAP

LDAP的全称是Lightweight Directory Access Protocol(轻型目录访问协议),它是一种访问目录服务的协议。它主要通过TCP/IP链接与目录服务进行通信。

OpenLDAP的1.0版本诞生于1998年,是一个历史悠久的软件。

2. Entry(条目)

条目是LDAP系统的基本数据单元,类似于关系型数据库的一行数据。每个条目都是由若干属性组成,其中包含一个全局唯一的标识符Distinguished Name(DN),通过DN可以定位一个唯一的条目。属性是一种特殊的键值对的数据结构,之所以称之为“特殊”是因为这里的“键”被称为type(类型),而且这种类型被定义为英文简写,比如类型“cn”是“Common Name”的简写,“mail”是"Email Address"的简写。

3. 条目的组织结构---DIT(Directory Information Tree)

LDAP将各个条目按照等级区分组织成了一颗目录树。如下图所示,这是一个按照“国家-->洲(省)-->组织-->部门-->人员”结构组成的目录系统。

此外,也可以按照域名方式来组织,如下图所示:

上图中,uid=babs是该节点的RDN(Relative Distinguished Name),这个节点的DN是“uid=babs,ou=People,dc=example,dc=com”,这是一个从叶子节点出发追溯到根节点的名称组合,非常便于查找和理解。

4. objectClass

objectClass是条目的一个特殊属性,类似于关系型数据的schema,通过它可以定义一个条目哪些属性是必须的,哪些是可选的。所以,我们可以称它为“条目定义类”。

5. 适用场景

(1) 各种认证,例如机器认证、用户认证

(2) 用户或系统组管理

(3) 用户地址簿管理

(4) 组织架构管理

(5) 资产追踪

(6) 电话信息存储

(7) 用户资源管理

等等...

目前,国内外有许多企业使用LDAP来存储员工信息,实现内部系统的SSO和用户认证等功能。

6. 架构

LDAP采用了C/S架构,服务端负责存储数据并为客户端提供操作接口,服务端可以是单机也可以是集群。在集群模式下,每个服务端节点存储一部分数据,客户端可以连接任何一个服务端节点。当客户端请求数据所在的节点(Server 2)与当前连接的节点(Server 1)不一致时,服务端(Server 1)会返回目标服务端节点(Server 2)的地址。

7. slapd

slapd是LDAP目录服务器的daemon(守护程序),它包含以下功能:

(1) 实现了LDAPv3协议,同时支持IPV4和IPV6;

(2) 通过SASL(Simple Authentication and Security Layer)提供了强认证机制和数据安全策略(完整性和可信性)。slapd中的SASL使用了Cyrus SASL,后者支持许多安全机制,如:DIGEST-MD5,EXTERNAL和GSSAPI;

(3) 同时支持TLS和SSL,目前SSL已经不够安全,已经过时;

(4) 可选择后端数据库,包括MDB和PASSWD。此外,一个slapd实例可支持多个后端数据库;

(5) slapd通过一个线程池来处理所有请求;

(6) slapd通过复制模式(Replication)来确保服务的高可用性,当开启复制模式之后多个“复制”节点可同时接受写请求。slapd通过同步机制来确保各“复制”节点的数据同步。

(7) slapd通过一个配置文件实现高可配置化,同时支持动态配置(运行期配置)。

8. lloadd

lloadd是LDAP目录服务器的负载均衡服务。当系统存在多个slapd实例时,lloadd可以将请求分发至不同实例以平衡每个实例的压力。

posted @ 2022-03-06 18:34  白马黑衣  阅读(861)  评论(0编辑  收藏  举报