LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是以树状层次机构来存储数据的,基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。
LDAP特点以及与关系型数据库的不同点:
1)LDAP目录服务的数据类型主要是字符型, 而不是关系数据库提供的整数、浮点数、日期、货币等类型
2)为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax)
3)同样也不提供象关系数据库中普遍包含的大量的函数
4)目录有很强的查询(读)功能,适合于进行大量数据的检索但目录一般只执行简单的更新(写)操作,不支持批量更新所需要的事务处理功能
5)它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制.
6)目录具有广泛复制信息的能力,适合于多个目录服务器同步/更新
LDAP的优点:
1)跨平台和标准协议
2)安装简单,易于维护,和关系形数据库相比更易维护
3)LDAP的结构用树来表示,而不是用表格
4)LDAP可以很快地得到查询结果,不过在写方面,就慢得多,LDAP提供了静态数据的快速查询方式
5)client/server
模型:
Client提供操作目录信息树的工具,这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
LDAP是一种开放Internet标准,LDAP协议是跨平台的 的Interent协议,它是基于X.500标准的, 与X.500不同,LDAP支持TCP/IP(即可以分布式部署)
结构:
server说明:
/usr/sbin/slapd -u ldap -h ldap:///
client说明:
用于对ldap server库进行操作工具:ldapadd, ldapsearch
用于将ldap server库在实际工作中使用工具:radius(RADIUS 是一种用于在需要认证其链接的网络访问服务器(NAS)和共享认证服务器之间进行认证、授权和记帐信息的文档协议)+ldap, pam+ldap
LDAP中提供三种身份认证机制:
1)匿名 Ldapsearch –x -LLL
2)基本认证 通过用户名和密码进行身份识别,又分为简单密码和MD5密码认证
# ldapadd -x -D "cn=root,dc=otas,dc=cn" -W -f base.ldif -x就是simple authetication Enter LDAP Password: 输入admin123 adding new entry "dc=otas,dc=cn" adding new entry "ou=People,dc=otas,dc=cn" adding new entry "ou=Group,dc=otas,dc=cn"
3)SASL Simple Authentication and Secure Layer
LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证
TLS 安全性:
分布式LDAP 是以明文的格式通过网络来发送信息的,包括client访问sldap的密码。TLS(SSL 的后继者,由OpenSSL 包)加密机制来解决这个问题。
DN,Distinguished Name分辨名,在LDAP中,一个条目的分辨名叫做“DN”,DN是该条目在整个树中的唯一名称标识,DN相当于关系数据库表中的关键字(Primary Key);是一个识别属性,通常用于检索
常见的两种DN设置:
基于cn(姓名)
cn=Fran Smith,ou=employees,dc=foobar,dc=com (dn格式就是这么一大串)
最常见的CN是/etc/group转来的条目
基于uid(User ID)
uid=fsmith,ou=employees,dc=foobar,dc=com 最常见的UID是/etc/passwd和/etc/shadow转来的条目