LDAP概念

来自Linux78|wiki
Bob讨论 | 贡献2020年1月8日 (三) 10:29的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

轻型目录访问协议

(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

目录服务在开发内部网和与互联网程序共享用户、系统、网络、服务和应用的过程中占据了重要地位。例如,目录服务可能提供了组织有序的记录集合,通常有层级结构,例如公司电子邮件目录。同理,也可以提供包含了地址和电话号码的电话簿。

LDAP由互联网工程任务组(IETF)的文档RFC定义,使用了描述语言ASN.1定义。最新的版本是版本3,由RFC 4511所定义。例如,一个用语言描述的LDAP的搜索如:“在公司邮件目录中搜索公司位于那什维尔名字中含有“Jessy”的有邮件地址的所有人。请返回他们的全名,电子邮件,头衔和简述。”

LDAP的一个常用用途是单点登录,用户可以在多个服务中使用同一个密码,通常用于公司内部网站的登录中(这样他们可以在公司电脑上登录一次,便可以自动在公司内部网上登录)。[3]

LDAP基于X.500标准的子集。因为这个关系,LDAP有时被称为X.500-lite。

概述

鉴于原先的目录访问协议(Directory Access Protocol即DAP)对于简单的互联网客户端使用太复杂,IETF设计并指定LDAP做为使用X.500目录的更好的途径。LDAP在TCP/IP之上定义了一个相对简单的升级和搜索目录的协议。

常用词"LDAP目录"可能会被误解,而实际并没有"LDAP目录"这么一个目录种类。通常可以用它来描述任何使用LDAP协议访问并能用X.500标识符标识目录中对象的目录。与ISODE提供的X.500协议的网关相比,尽管OpenLDAP及其来自密歇根大学的前身等的目录基本上设计成专门为LDAP访问而优化的,但也没有比其他用LDAP协议访问的目录额外多出来所谓“LDAP目录”。

协议的第三版由Netscape的Tim Howes,ISODE的Steve Kille和Critical Angle Inc的Mark Wahl撰写。

协议内容

LDAP目录的条目(entry)由属性(attribute)的一个聚集组成,并由一个唯一性的名字引用,即专有名称(distinguished name,DN)。例如,DN能取这样的值:“ou=people,dc=wikipedia,dc=org”。

        dc=org

     |dc=example
      /          \
ou=people     ou=groups

LDAP目录与普通数据库的主要不同之处在于数据的组织方式,它是一种有层次的、树形结构。所有条目的属性的定义是对象类object class的组成部分,并组成在一起构成schema;那些在组织内代表个人的schema被命名为white pages schema。数据库内的每个条目都与若干对象类联系,而这些对象类决定了一个属性是否为可选和它保存哪些类型的信息。属性的名字一般是一个易于记忆的字符串,例如用cn为通用名(common name)命名,而"mail"代表e-mail地址。属性取值依赖于其类型,并且LDAPv3中一般非二进制值都遵从UTF-8字符串语法。例如,mail属性包含值“user@example.com”;jpegPhotos属性一般包含JPEG/JFIF格式的图片。

LDAP目录条目可描述一个层次结构,这个结构可以反映一个政治、地理或者组织的范畴。在原始的X.500模型中,反应国家的条目位于树的顶端;接着是州或者民族组织。典型的LDAP配置使用DNS名称作为树形结构的顶端,下列是代表人、文档、组织单元、打印机和其他任何事务的条目。

LDAP影响了后续的Internet协议,包括新版本的X.500、Directory Services Markup Language (DSML)、Service Provisioning Markup Language (SPML)和Service Location Protocol.

LDAP的主要产品

厂商          产品                           介绍
SUN          SUNONE Directory Server       基于文本数据库的存储,速度快 。
IBM          IBM Directory Server          基于DB2 的的数据库,速度一般。
Novell       Novell Directory Server       基于文本数据库的存储,速度快, 不常用到。
Microsoft    Microsoft Active Directory    基于WINDOWS系统用户,对大数据量处理速度一般,但维护容易,生态圈大,管理相对简单。
Opensource   Opensource  OpenLDAP          开源的项目,速度很快,但是非主 流应用。

LDAP的基本模型

每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树概念:

目录树概念

1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。

2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。

3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。

4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

DC、UID、OU、CN、SN、DN、RDN

关键字    英文全称                含义
dc       Domain Component      域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)
uid      User Id               用户ID songtao.xu(一条记录的ID)
ou       Organization Unit     组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“oa组”(一条记录的所属组织)
cn       Common Name           公共名称,如“Thomas Johansson”(一条记录的名称)
sn       Surname               姓,如“许”
dn       Distinguished Name    “uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一)
rdn      Relative dn          相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”

LDAP能够干什么呢?

LDAP可以用来做许多不同的事情呢。这篇文档聚焦于如何集中管理用户,把所有用户的信息保存在统一的LDAP目录里(统一并不意味着只有一台服务器,LDAP是支持高可用性与高冗余性的),另外还有其它一些目标也可以通过LDAP来实现。

  • 公钥基础设施
  • 共享日历
  • 共享地址簿
  • 存储DHCP,DNS,......
  • 系统级的配置管理(跟踪多台服务器的配置)
  • 集中认证 (PosixAccount)
  • ...