LDAP介绍
LDAP概述
LDAP是轻量目录访问协议
,(LDAP, Lightweight Directory Access Protocol)LDAP是用于访问目录服务
(特别是基于X.500的目录服务),LDAP在TCP/IP
或其他面向连接的传输服务上运行。LDAP是IETF标准的跟踪协议。
LDAP是目录非关系型
的,不存储BLOB,读写是非对称
的,读方便,写麻烦,适合于查询搜索。LDAP不支持数据库的事务和回滚机制。
LDAP支持负载的查询过滤器
,使用树状结构,类似于互联网域名、公司组织结构、文件的目录结构等。
LDAP优势
- 读写效率高:可以将LDAP看作是对读操作进行优化的一种"树状数据库",在读写比例大于7:1时,LDAP性能表现很好,比较适合身份认证。
- 开放的标准协议:不同于SQL数据库,LDAP客户端是跨平台的,对几乎所有的程序语言都是标准的API接口。
- 强认证方式:具有很高的安全级别,在国际化方面,LDAP使用UTF-8编码存储各种语言的字符。
- OpenLDAP实现开源:开源软件OpenLDAP包括了很多新功能,最轻便且消耗系统资源最少,可以基于OpenLDAP进行开发新功能。
- 灵活添加数据类型:LDAP根据schema的内容定义各种属性之间的从属关系以及匹配模式。在关系型数据库中若要为用户添加一个属性,需要在表中增加一个字段,如果已有的数据表中增加一个字段,需要更改表的结构,变更比较困难。而LDAP只需要在schema中加入新的属性,属性的增加不会影响性能。
- 树状结构的数据存储:LDAP底层是B/B+树数据结构,整棵树的任何一个分支都可以单独放在一个服务器中进行分布式管理,这不仅有利于做服务器的负载均衡,也便于跨地域的服务器部署。在查询负载大或者企业在不同区域都设有分公司时进行部署突出优势。
LDAP的主要应用场景
- 机器认证
- 用户认证
- 用户/系统组
- 地址簿
- 组织代表
- 资产追踪
- 电话信息存储
- 用户资源管理
- 电子邮件地址查询
- 应用配置存储
LDAP工作方式
LDAP是无状态
的客户端-服务器
的工作模式,一台或多台包含了由目录信息树组成数据的LDAP服务器。客户端连接到服务器并询问一个问题,服务器以一个答案或者指针(客户端可以获取其他信息的指针,通常是另一个LDAP服务器)进行响应。无论客户端连接了哪一台LDAP服务器,都是看到的相同目录视图。
LDAP基本术语
Directory 目录
Directory 目录是用于存放信息的单元,基于域的命名。
Entry条目
Entry是目录管理的对象
,是LDAP最基本的单元
,类似于数据库中的每一条record记录。对LDAP的增删改查都是以Entry为基本单元进行操作的。每个Entry都有一个唯一的标识
(DN,Distinguished Name),DN在语法上是由多个相对的标识名注册,之间由逗号隔开,如du:cn=Manager,dc=hadoop,dc=apache,dc=org
,通过这种层次型
语法结构,可以很方便表示出条目在LDAP目录树中的位置。
Attribute属性
每个条目都有很多的Attribute属性
,比如个人信息类有姓名、地址、邮箱等属性,每个属性都有名称以及对应的值,每个属性值可以是单个,也可以是多个。一些常见的属性如下:
属性 | 别名 | 说明 |
---|---|---|
cn | common name | 通常指一个对象的名称 |
dn | distinguished name | 唯一标识名,类似于绝对路径 ,每个对象都有一个唯一标识名,如cn=Manager,dc=hadoop,dc=apache,dc=org |
rdn | relative distinguished name | 相对标识名,类似于相对路径 ,如cn=Manager |
dc | domain component | 通常指定一个域名 ,比如org.apache.hadoop写成dc=hadoop,dc=apache,dc=org |
ou | organizationl unit | 指定一个组织单元的名称,如ou=groups |
sn | sur name | 通常指一个人的姓氏,比如sn:Chen |
AttributeType属性类型
每个属性多有唯一的属性类型,属性类型是约定属性值的数据格式以及语法类型
,属性类型约定属性值可以有多少个并约定属性查询时的匹配规则、排序、大小写等规则。
ObjectClass对象类
ObjectClass对象类是属性的集合
,可以将多个属性封装成一个对象,比如人员信息这个对象类,包含了姓名,地址,电话等属性,学生是人员信息的继承类,除了上面的几个属性,还可以有额外的学校、年级、班级等属性。 通过对象类可以方便的定义条目Entry类型,每个条目可以继承多个对象类,从而获得多个属性。
Schema模式
对象类、属性类型、语法分别约定了条目、属性、值,这些构成了模式,模式中的每个元素都有唯一的oid编号。
LDIF:LDAP Interchange Format
在RFC2849中定义的标准,用于规范LDAP的配置和目录内容等详细信息的保存,我们一般可以使用.ldif
结尾的文件进行LDAP相关配置和目录内容的增删改查。
LDAP目录树
LDAP中,目录条目以分层的树状结构排列。
传统指定方式
传统意义上,这种结构反映的是地理或者组织边界,代表国家的条目是在树的顶部显示,在国家下面是代表州和国家组织的条目。在他们下面可能是代表组织单位、人员、打印机、文档条目。
网络指定方式
LDAP的树状结构也可以是基于网络域名来排列,这种命名方式因为DNS定位服务目录而流行。
LDAP常用命令介绍
常用参数说明
- -f:
-f file.ldif
,从文件file.ldif中读取操作。 - -x:简单认证。
- -D:
-D binddn
,绑定DN。 - -H:
-H URI
,通过LDAP统一的资源标识符。 - -h:
-h host
,LDAP服务器的ip或者hostname。 - -W:提示绑定密码,即不在命令上写密码,如
ldapadd -x -D "cn=Manager,dc=hadoop,dc=apache,dc&#