Contents

LDAP相关概念

令人头疼的多系统账号管理

大家是否有以下困扰?

  • 公司有多套不同的办公系统
  • 每个系统都有不同的账号密码,有时候账号密码容易记混
  • 内部项目每开发一个都要开发和维护一套用户名密码
  • 多套系统的账号密码维护起来令人头大

LDAP服务可以用来解决以上问题

什么是 LDAP

LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,LDAP是从X.500目录访问协议的基础上发展过来的,目前的版本是v3.0。与LDAP一样提供类似的目录服务软件还有OpenLDAP、ApacheDS、Active Directory、OpenDJ、Red Hat Directory Service、Microsoft Active Directory 等

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:

  • 企业员工信息,如姓名、电话、邮箱等;
  • 公用证书和安全密钥;
  • 公司的物理设备信息,如服务器,它的IP地址、存放位置、厂商、购买时间等;

LDAP 特点

  • LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  • LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP提供了静态数据的快速查询方式
  • Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在你的面前
  • LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议

LDAP 的基本模型

目录树

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

关键字详情

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

相关工具

  • OpenLDAP 使用比较多的开源LDAP软件
  • phpLDAPadmin LDAP 的 web UI
  • ApacheLdapStudio LDAP 的 GUI 支持 macOS Linux Windows
  • PWM 自助修改密码的web服务
  • Self Service Password 自助修改密码的web服务