您好,欢迎访问三七文档
LDAP使用手册一、LDAP介绍LDAP是轻量级目录访问协议的简称(LightweightDirectoryAccessProtocol).用于访问目录服务。它是X.500目录访问协议的移植,但是简化了实现方法。二、目录服务与关系数据库之间的区别a)目录查询操作比关系数据库有更高的效率,但是更新效率比关系数据库低b)目录不支持关系数据库那样的复杂查询,比如两个表的连接。c)目录不支持多操作的事物完整性,没有方式确认一些操作是全部成功还是全部失败d)目录能够能好和更灵活的支持子查询和匹配查询e)目录协议更适合应用于广域网,比如因特网或者大型公司的网络f)目录的管理,配置,和调试比关系型数据库更简单g)在使用关系数据库之前,必须首先定义表结构(模式)才可以进行操作。而目录中所使用的模式是由LDAP定义好的一系列类组成的。对于目录中的每条记录中必须属于其中的一个类或者多个类。这些类定义了该记录中可以存储的信息。h)目录以对象的形式存储数据。信息被组织成树型结构。i)目录服务支持分布式存储结构,容易实现数据的扩展,能满足大容量存储的要求。三、LDAP的优点1:可以存储在其它条件下很难存储的管理信息2:数据安全可靠,访问控制粒度细腻。3:LDAP是一个标准的,开放的协议,具有平台无关性。4:数据分布广,规模可灵活扩充。5:LDAP目录服务器可以使任何一种开放源代码或商用的LDAP目录服务器。四、LDAP模型LDAP模型是从X.500协议中继承过来的。是LDAP的一个组成部分,用于指导客户如何使用目录服务LDAP定义了四个模型,包括信息模型,命名模型,功能模型,安全模型。1.LDAP信息模型(LDAPinformationmodel)LDAP信息模型用于描述LDAP中信息的表达方式。LDAP信息模型包含三部分EntriesAttributesValuesEntry:Directry中最基本的信息单元,Entry中所包含的信息描述了现实世界中的一个真实的对象,在目录系统中它可以理解为,目录树中的一个节点。在目录中添加一个Entry时,该Entry必须属于一个或多个objectclass,每一个objectclass规定了该Entry中必须要包含的属性,以及允许使用的属性。Entry所属的类型由属性objectclass规定。每一个Entry都有一个DN(distinguishedname)用于唯一的标志Entry在directory中的位置。如下图所示:根节点DN的命名有多种方法,其中之一就是域名命名法。例如:我们要以公司的网址作为公司目录树的根节点。如sohu.com那么根节点的DN应该为DN:dc=sohu,dc=com上图中根节点的DN:dc=example,dc=com而该根节点有两个子节点,ou=people,和ou=servers。People节点的DN:ou=People,dc=example,dc=comRDN:是目录树中节点的相对分辨名。如:People节点的DN:ou=People,dc=example,dc=com而该节点的RDN:ou=PeopleAttribute:每个Entry都是由许多Attribute组成的。每一个属性(Attribute)描述的是对象的一个特征。每一个属性(Attribute)由一个类型(type)和一个或多个值组成(Value)如下图所示:2.LDAP命名模型(LDAPNamingModel)LDAP命名模型定义了如何在目录系统中组织数据以及如何从目录系统中查找数据LDAP命名模型指定将Entry按类似倒立的树形结构进行规划。非常类似于UNIX系统得文件系统如下图所示:UnixFileSystemADirectoryTreeLDAP目录结构与Unix系统的文件系统主要有三点不同1.UNIX文件系统有一个根路径,作为访问所有文件和目录的入口。而LDAP目录结构中的rootEntry只是一个特殊的Entry,它包含了目录服务器的配置信息,通常情况下,并不用来存储信息2.在LDAP目录中任何一个节点都可以包含信息,同时也可以是一个容器,也就是说任何一个LDAPEntry都可以有子节点。而UNIX文件系统中的节点要么是一个文件,要么是一个目录。而不能同时是这两种情况。只有目录才可以拥有子节点。下图表示了LDAP是一个典型的目录结构LDAPDirectory3.UNIX文件系统目录结构与LDAP目录的第三个区别在于他们的每一个节点的命名不同。LDAP目录中节点的命名和UNIX文件系统目录结构中的节点的命名是相反的。上图示UNIX文件系统结构,如果要定位到grep节点的话,命名如下/user/bin/grep上图是一个典型的目录结构第一个节点DN命名为:dn:dc=example,dc=com第二个节点DN命名为:dn:ou=People,dc=example,dc=com第三个节点DN命名为:dn:uid=bjensen,ou=people,dc=example,dc=com我们说每一个Entry的DN是唯一的,就是因为这种数形结构决定了,从根节点到其它任何一个节点的路径是唯一的。RDN:在DN中最左边的内容称为相对域名。如ou=People,dc=example,dc=com其RDN为ou=People对于共享同一个父节点的所有节点的RDN必须是唯一的。如果不属于同一个节点则节点的RDN可以相同。特殊字符:以下字符如果出现在Entry中的属性值,必须进行转义#--------\#,-------\,+---------\+“---------\”\--------\\-----\-----\;--------\;如:o=UnitedWidgets\,Ltd.,c=GB别名在LDAP中可以定义一个别名Entry,指向另外一个Entry。如下图所示如何创建别名Entry要创建别名Entry,该Entry的objectclass必须是alias。而且其属性aliasedObjectName的值必须是该Entry所指向的Entry的DN。不过一般情况下应该避免使用别名Entry。会影响性能。而且如果被引用的Entry被删除的话,该Entry就会指向一个错误的结果。LDAPURL由于使用AliasEntry有许多缺点,可以使用LDAPURL或referral代替AliasEntry。3.LDAP功能模型(LDAPFunctionalModel)LDAP功能模型描述了LDAP协议可以采用的相关操作,来访问存储在目录树中的数据。LDAP功能模型包含一系列的操作,这些操作被分为三组。1.更新操作包括添加,删除,重命名,修改Entry2.InterrogationOperation用于数据的查询3.认证和控制(bindunbindabandon)InterrogationOperation1.TheLDAPSearchOperation该操作需要八个参数a.baseobject也可以表示为DN。表明你想要查询direcoty中树的顶点。b.searchscopeDN与searchscope两个参数限定了要搜索数据的范围共有三个scopeSub搜索范围是包含顶节点在内的一棵子树如下图其中DN=”ou=People,dc=example,dc=com”Base搜索范围只包含一个节点如下图其中DN=”ou=People,dc=example,dc=com”Onelevel其搜索范围是DN所表示的节点下的直接子节点。如下图其中DN=”ou=People,dc=example,dc=com”c.aliasd.sizelimit表示返回的符合条件的Entry的数目,0表示返回所有符合条件的Entry。目录服务器端返回一个LDAP_SIZELIMIT_EXCEEDED。e.timelimit表示搜索一次所需要的时间,超过时间将停止搜索。服务器端返回一个LDAP_TIMELIMIT_EXCEEDEDf.attribute-only该属性是一个boolean值,如果为true,表示服务器端之返回所搜索的Entry的属性名称,不返回属性值。g.filter通过该属性可以更精确的搜索结果。就像SQL语句中的条件查询。Filter分类1.(sn=smith)匹配属性sn的值包含smith的Entry2(sn=smith*)匹配属性sn的值以smith开始的所有Entry如smithers,smithsonain等。其中“*”表示通配符,代表任意字符。3(sn~=jensen)匹配属性sn的值听起来像jensen的Entry。不同的目录服务器,有不同的实现方法。4(age21)或者(!(age=21))匹配属性age的值大于21的Entry如果是字符的话,如(sn=Smith)则按字典顺序进行比较。5(telephoneNumber=*)匹配所有属性telephoneNumber的值不为空的Entry6(&(sn=smith)(age21))匹配属性sn的值包含smith而且属性age的值大于21的Entry(|(sn=smith)(age21))匹配属性sn的值包含smith或者属性age的值大于21的Entry(&(mail=*)(!(telephoneNumber=*)))匹配属性mail的值不为空,而且属性telephoneNumber为空的Entry7如果属性的值包含以下五个特殊字符的话必须进行转义如:(cn=A*Star)则必须改为(cn=A\2AStar)h.returnattributes该属性表示客户的搜索结果中需要返回的和用户相关的属性列表,如果为空表示返回所有属性。4.LDAP安全模型安全模型的作用:是提供一个框架,保护目录中的信息不被非法访问。LDAP中的安全模型主要通过身份认证、安全通道和访问控制(ACL)来实现LDAP是一个面向连接的协议,在能够对LDAP目录进行任何操作之前,LDAP客户端必须获得一个到LDAP服务端的一个连接,在这个过程中需要对LDAP客户端的身份进行验证,这一过程可以理解为用户绑定。LDAPV2只支持简单的密码验证。LDAPV3实现了SASL安全框架,SASL为多种验证协议提供了一种标准的验证方法,对于不同的验证系统,可以实现特定的SASL机制。SASL机制代表了一种验证协议。在用户通过验证之后,可以为该用户分配附加的权限,比如一些用户只能查看特定的Entry,而不能修改。一些用户可以查看并且修改所有的Entry等。这一过程可以理解为访问控制。五、LDIFLDIF通过一个文本文件,用来描述目录数据,可以将目录服务器中的数据导出到一个LDIF文件中,并且可以将LDIF文件中的数据导入到另一个目录服务器。即使这两个目录服务器内部使用的是不同的数据库格式。有两种类型的LDIF文件,第一种用来描述Directory目录数据的,第二种包含更新语句,用于更新现有的Directory条目数据。第一种文件,内容包含两部分:第一部分是DN,第二部分是一系列的属性-值对如下图:以上的LDIF文件只包含了一个DirectoryEntry。可以在一个LDIF文件中包含多个Entry第二种文件,包含更新语句。第一行同样是DN。第二行是更新类型,后边是要更新的属性及值。当然也可以用来添加新的Entry。如下图:添加一条Entry(注意第二行:changetype:add)如下图:删除一条Entry如下图:修改一条Entry语法如下:dn:dnofentrytobemodifiedchangetype:modifymodifytype:attributetype[attributetype:attributevalue]添加属性示例删除属性示例或者修改属性值也可以将多条更新语句放在一个文件里,各语句之间用“-”分开重新命名Entry或移动Entry语法:dn:Entry的DN名称changetype:moddn//changetype类型必须为moddn[newsuperior:如果要
本文标题:Ldap协议
链接地址:https://www.777doc.com/doc-7163098 .html