目录
- LDAP是什么?
- 什么是目录服务?
- 什么是LDAP认证?
- 为什么要用LDAP?
- LDAP能做什么?
- 为什么用LDAP做身份验证?
- LDAP的产品&实现
- LDAP基本模型
- 目录树&名词解释
- 分布式
- LDAP的操作
LDAP是什么?
LDAP(Lightweight Directory Access Protocol)轻量目录访问协议,是一种用于访问和维护分布式目录服务的协议,是目录访问协议(DAP)的轻量级版本,是X.500(网络中目录服务的标准)的一部分。
LDAP被广泛用于在网络上查询和修改分布式目录信息,特别是用于企业和组织内部的用户认证、访问控制和资源管理。LDAP约定了Client与Server之间的交互格式、端口号、认证方式等内容。
什么是目录服务?
目录服务是一个特殊的数据库,按照树状存储信息,目录告诉用户某些内容在网络中的位置。
目录服务的数据类型主要是字符型。主要面向数据的查询服务,有很强的查询功能。
目录具有广泛复制信息的能力,适合于多个目录服务器同步/更新。树形只是推荐的底层数据存储方式,因为读多写少,所以其实也可以使用传统关系型数据库作为LDAP数据源。LDAP只是一个协议,约定的是C/S之间的通信方式,理论上服务器只要能处理LDAP协议规定操作返回正确结果即可。
什么是LDAP认证?
将用户数据放在LDAP服务器上,通过LDAP服务器上的数据对用户做认证处理。在用户登录时,每次拉取所有可通过的用户列表,再去做匹配,效率太低。将用户数据发给LDAP服务器,在服务器上做匹配,然后判断是否可以通过认证,效率较高。
为什么要用LDAP?
LDAP能做什么?
- 管理用户的身份认证、授权管理、用户组、域账号、按需实施组管理策略等。
- 管理服务器及客户端计算机账户、计算机域管理。
- 管理资源:打印机、文件共享服务、网络资源。
为什么用LDAP做身份验证?
- LDAP数据库在读写较多的情况下具有较高性能。
- 以树形结构存储数据,任一分支都可单独在服务器中分布式管理,有利于负载均衡,方便做跨区域的服务器部署。
- LDAP支持强认证方式,可以达到很高安全级别,根据UTF-8编码。
- LDAP根据schema的内容定义各种属性之间的丛书关系及匹配模式。在传统的结构化数据库mysql中添加一个字段,就需要在用户表中添加一个字段。但是在数据量极大的时候是很耗时间的,效率低,用户体验差,但是LDAP只需要在Schema中加入新的属性,不会由于用户的属性增多而形象查询性能。
- LDAP是开放的跨平台协议,只需通过简单配置,可大大降低重复开发和对接的成本。
LDAP的产品&实现
- Microsoft Active Directory(AD):AD是Windows操作系统中的目录服务,它支持LDAP协议以及其他认证和授权协议。核心:谁以什么权限访问什么。
- OpenLDAP:开源LDAP实现,提供了一个高度可配置的LDAP服务器,支持广泛的操作系统与平台。是LDAP协议的参考实现之一,由OpenLDAP项目维护和开发。
- Oracle Internet Directory(OID):OID是Oracle提供的企业级LDAP目录服务,与Oracle数据库和其他Oracle产品紧密集成。
LDAP基本模型
目录树&名词解释
- 目录树(Directory Information Tree;DIT)
- 项,条目(Entry):目录中的每一行都可以叫做一项,不论是叶子节点还是非叶子节点。项包含一个唯一的DN,一些属性,一些对象类。
- 根节点项(Root DSE;Root DSA-specific Entry):每个LDAP服务器必须对外暴露一个特殊的项,叫做Root DSE,这个项的DN是空字符串。这个项是根节点,描述了LDAP服务器自身的信息和能力。
- 分辨名(dn;Distinguished Name):用于唯一标识一个项,以及在目录中的位置,可以和文件系统中的路径类比。从左到右,各部分依次向树根靠近。
- 组织单元(ou;Organization Unit):在dn中可能会包含ou=某部门。
- 相对分辨名(rdn;Relative Distinguished Name):rdn就是键值对,一个dn由多个rdn组成,rdn以逗号分隔。
- 域名组成(dc;Domain Component):格式是将完整的域名分成几个部分,yzdy.space变成dc=yzdy,dc=space,以逗号分隔。
- 对象类(objectClass):指定本项中必须(MUST Attributes)、可能包含的属性(MAY Attributes),相当于MySQL中的建表语句。包含某个object class的项必须满足其约定的规范。
- 属性(Attribute):由一个属性类型和一个或多个属性值组成。
分布式
LDAP目录可以分布式部署在多个服务器上,每个服务器可以具有总目录的复制版本,该版本会定期同步。LDAP服务器称为目录系统代理(DSA)。接收到来自用户的请求的DSA负责该请求,并根据需要传递给其他DSA,但要确保为用户提供一个统一的响应。
LDAP的操作
- 查询类操作:搜索、比较
- 更新类操作:添加条目、删除条目、修改条目、修改条目名
- 认证类操作:绑定、解绑
- 其他操作:放弃、扩展操作