LDAP中文学习手册_第1页
LDAP中文学习手册_第2页
LDAP中文学习手册_第3页
LDAP中文学习手册_第4页
LDAP中文学习手册_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LDAP使用手册一、 LDAP介绍LDAP是轻量级名目访问协议的简称(LightweightDirectoryAccessProtocol).用于访问名目效劳。它是X.500名目访问协议的移植,但是简化了实现方法。二、 名目效劳与关系数据库之间的区分名目查询操作比关系数据库有更高的效率,但是更效率比关系数据库低名目不支持关系数据库那样的简单查询,比方两个表的连接。名目不支持多操作的事物完整性,没有方式确认一些操作是全部成功还是全部失败名目能够能好和更敏捷的支持子查询和匹配查询名目协议更适合应用于广域网,比方因特网或者大型公司的网络名目的治理,配置,和调试比关系型数据库更简洁(模式)才可以进展操作。而名目中所使用的模式是由LDAP定义好的一系列类组成的。对于名目中的每条记录中必需属于其中的一个类或者多个类。这些类定义了该记录中可以存储的信息。名目以对象的形式存储数据。信息被组织成树型构造。名目效劳支持分布式存储构造,简洁实现数据的扩展,能满足大容量存储的要求。三、 LDAP的优点1:可以存储在其它条件下很难存储的治理信息2:数据安全牢靠,访问掌握粒度细腻。3:LDAP是一个标准的,开放的协议,具有平台无关性。4:数据分布广,规模可敏捷扩大。5:LDAP名目效劳器可以使任何一种开放源代码或商用的LDAP名目效劳器。四、 LDAP模型LDAP模型是从X.500协议中继承过来的LDAPLDAP定义了四个模型,包括信息模型,命名模型,功能模型,安全模型。LDAP信息模型(LDAPinformationmodel)LDAP信息模型用于描述LDAP中信息的表达方式。LDAP信息模型包含三局部EntriesAttributesValues(条目属性值)Entry:Directry中最根本的信息单元,Entry中所包含的信息描述了现实世界中的一个真实的对象,在EntryEntry必需属于一个或多个objectclass,每一个objectclass规定了该Entry中必需要包含的属Entry所属的类型由属性objectclassEntry都有一个DN(distinguishedname)Entrydirectory中的位置。如以下图所示:根节点DN的命名有多种方法,其中之一就是域名命名法。例如:我们要以公司的网址作为公司名目树的根节点。如 sohu那么根节点的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:EntryAttribute组成的。每一个属性(Attribute)描述的是对象的一个特征。每一个属性(Attribute)由一个类型(type)和一个或多个值组成(Value)如以下图所示:LDAP命名模型(LDAPNamingModel)LDAP命名模型定义了如何在名目系统中组织数据以及如何从名目系统中查找数据LDAP命名模型指定将Entry按类似倒立的树形构造进展规划。格外类似于UNIX系统得文件系统如以下图所示:UnixFileSystemADirectoryTreeLDAP名目构造与Unix系统的文件系统主要有三点不同UNIXLDAP名目构造中的rootEntry只是一个特别的Entry,它包含了名目效劳器的配置信息,通常状况下,并不用来存储信息LDAP名目中任何一个节点都可以包含信息,同时也可以是一个容器,也就是说任何一个LDAPEntryUNIX而不能同时是这两种状况。只知名目才可以拥有子节点。以下图表示了LDAP是一个典型的名目构造LDAPDirectoryUNIX文件系统名目构造与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其RDNou=People对于共享同一个父节点的全部节点的RDN必需是唯一的。假设不属于同一个节点则节点的RDN可以一样。特别字符:Entry中的属性值,必需进展转义# \#,-------\,+---------\+“---------\”\--------\\<-----\<>-----\>; \;如:o=UnitedWidgets\,Ltd.,c=GB别名LDAP中可以定义一个别名Entry,指向另外一个Entry。如以下图所示如何创立别名EntryEntryEntryobjectclassaliasaliasedObjectNameEntryEntryDNEntry。会EntryEntry就会指向一个错误的结果。LDAPURLAliasEntryLDAPURLreferralAliasEntry。LDAP功能模型(LDAPFunctionalModel)LDAP功能模型描述了LDAP协议可以承受的相关操作,来访问存储在名目树中的数据。LDAP功能模型包含一系列的操作,这些操作被分为三组。更操作包括添加,删除,重命名,修改EntryInterrogationOperation用于数据的查询认证和掌握(bindunbindabandon)InterrogationOperationTheLDAPSearchOperation该操作需要八个参数baseobject也可以表示为DN。说明你想要查询direcoty中树的顶点。searchscopeDNsearchscope两个参数限定了要搜寻数据的范围scopeSub搜寻范围是包含顶节点在内的一棵子树如以下图其中DN=”ou=People,dc=example,dc=com”Base搜寻范围只包含一个节点如以下图其中DN=”ou=People,dc=example,dc=com”OnelevelDN所表示的节点下的直接子节点。如以下图其中DN=”ou=People,dc=example,dc=com”aliassizelimit表示返回的符合条件的Entry的数目,0表示返回全部符合条件的Entry。名目效劳器端返LDAP_SIZELIMIT_EXCEEDED。timelimitLDAP_TIMELIMIT_EXCEEDEDattribute-only该属性是一个booleantrueEntry的属性名称,不返回属性值。filter通过该属性可以更准确的搜寻结果。就像SQL语句中的条件查询。Filter分类1.(sn=smithsnsmithEntry(sn=smith*)匹配属性sn的值以smith开头的全部Entry如smithers,smithsonain等。其中“*”表示通配符,代表任意字符。(sn~=jensensnjensenEntry。不同的名目效劳器,有不同的实现方法。(age>21)或者(!(age<=21)age21Entry假设是字符的话,如(sn<=Smith)则按字典挨次进展比较。(telephoneNumber=*telephoneNumberEntry(&(sn=smith)(age>21))匹配snsmithage21Entry(|(sn=smith)(age>21))snsmithage21Entry(&(mail=*)(!(telephoneNumber=*)))匹配属性mail的值不为空,而且属性telephoneNumberEntry假设属性的值包含以下五个特别字符的话必需进展转义如:(cn=A*Star则必需改为(cn=A\2AStar)returnattributes属性。LDAP安全模型安全模型的作用:是供给一个框架,保护名目中的信息不被非法访问。LDAP中的安全模型主要通过身份认证、安全通道和访问掌握(ACL)来实现LDAP是一个面对连接的协议,在能够对LDAP名目进展任何操作之前,LDAP客户端必需获得一个到LDAP效劳端的一个连接,在这个过程中需要对LDAP客户端的身份进展验证,这一过程可以理解为用户绑定。LDAPV2只支持简洁的密码验证。LDAPV3SASL安全框架,SASL为多种验证协议供给了一种标准的验证方法,对于不同的验证系统,可以实现特定的SASL机制。SASL机制代表了一种验证协议。Entry,而不能修改。一些用户可以查看并且修改全部的Entry等。这一过程可以理解为访问掌握。五、 LDIFLDIF通过一个文本文件,用来描述名目数据,可以将名目效劳器中的数据导出到一个LDIF文件LDIF是不同的数据库格式。有两种类型的LDIFDirectory名目数据的,其次种包含更语句,用于更现有的Directory条目数据。第一种文件,内容包含两局部:第一局部是DN,其次局部是一系列的属性-值对如以下图:以上的LDIF文件只包含了一个DirectoryEntry。可以在一个LDIF文件中包含多个Entry其次种文件,包含更语句。第一行同样是DN。其次行是更类型,后边是要更的属性及值。固然也可以用来添加的Entry。如以下图:添加一条Entry(留意其次行:changetype:add)如以下图:删除一条Entry如以下图:修改一条Entry语法如下:dn:dnofentrytobemodifiedchangetype:modifymodifytype:attributetype[attributetype:attributevalue]添加属性例如删除属性例如或者修改属性值也可以将多条更语句放在一个文件里,各语句之间用“-”分开重命名EntryEntry语法:dnEntry的DN名称changetypemoddn//changetype类型必需为moddn[newsuperior:假设要移动一条Entry则该项表示一个的节点的DN][deleteoldrdn0|1该项表示是否要删除修改以前的RDN0不删除][newrdn:Entry的RDN]由于一条EntryDN是由该EntryRDN和它的父节点的DN组成的。一条EntryRDN是该Entry中的一个属性。就像关系数据库中,主键值可以唯一区区分一条记录一样,在同一个节点下的全部Entry中的RDN必需由唯一标识该Entry属性组成。所以重命名Entry,也就是重命名该EntryRDN。例如如下:执行以上语句后该Entry如下所示:dn:uid=babsj,ou=People,dc=example,dc=comuid:babsjuid:bjensen移动一条Entry例如如下:六、LDAP模式〔schema〕假设你使用过关系型数据库,那么对模式应当不会生疏。关系数据库系统都是通过表格的形式进展数据存储的。在这之前,我们首先要定义表构造,也即是模式。表构造由一些字段组成,每个字段都有一个类型,以及一些约束条件。这就规定了我们可以存储的信息。上面我们介绍过LDAP名目效劳器中存储的信息是被组织成树型构造进展存储的。和存储信息之前LDAP名目效劳器的用户而言,一般不需要自己定义模式,全部实现LDAP协议的名目效劳器,都已经定义好了很多模式,这些模式可以解决我们大局部的信息存储的问题。LDAP模式是由以下一些元素组成的1:Attributtypes属性类型。表示该属性可以存储什么样的信息。2:Attributesyntaxes性语法,该元素表示每个属性名称所存储的信息如何组织。3:匹配规章,每一个属性都有匹配规章,用于数据的比较。4:objecclasssEntr都必需至少属于一个objecclaEntry可以存储那些属性。下面介绍一下LDAP协议中定义的一些常用属性极其含义〔具体信息看RFC2252文档〕

规定了该属性ccndccognhomephonemailmobileoou

中文名称国家名称通用名称域名组件国家名称gavenName家庭号码邮件地址移动号码组织名称部门名称

描述值为两位国家代码如:中国:CN美国:US如:sohudc=sohu,dc=com国家的全名通常为组织机构下的一个部门或者一个大postalCodesnststreetuserPassworduiddepartmentNumberdisplayNamedescriptionemployeeNumbermanager

邮政编码姓,别名州或者省的名称街道地址用户密码用户ID部门编号显示名称描述员工编号经理

型实体下的一个子实体下面是一些LDAP协议中定义的objectclass〔具体信息查看RFC2252文档〕ObjectObjectclassaccount必需属性userid可选属性description$$seeAlsolocalityName$ organizationName$ organizationalUnitNamecountrydcObjectdevicecdccn$hostsearchGuide$descriptionserialNumber$ seeAlso$ owner $ ou $ o $ l$descriptioninetOrgPerson->personaudio$businessCategory$ carLicense$ departmentNumber$ displayName$ employeeNumber$ employeeType$givenName$homePhone$$$$$homePostalAddressinitials$labeledURIjpegPhoto$ mailmanager$mobile$or$photo$roomNumber$secretary$$$uid$ userCertificatex500uniqueIdentifierpreferredLanguage$$userSMIMECertificate$userPKCS12organizationalPersontitle$$$x121AddressregisteredAddressdestinationIndicator$preferredDeliveryMethod$ telexNumber$ teletexTerminalIdentifier$ telephoneNumber$internationaliSDNNumber$ facsimileTelephoneNumber$street$postOfficeBox$ postalCode$ postalAddress$ physicalDeliveryOfficeNaorganizationome$ou$st$luserPassword$ searchGuide $ seeAlso$ businessCategory$ x121Address$ registeredAddress$ destinationIndicator$preferredDeliveryMethod$ telexNumber$ teletexTerminalIdentifier$ telephoneNumber$internationaliSDNNumber$ facsimileTelephoneNumber$street$postOfficeBox$ postalCode$ postalAddress$ physicalDeliveryOfficeNaorganizationalRolecnme$st$l$descriptionx121Address$ registeredAddress$ destinationIndicator$preferredDeliveryMethod$ telexNumber$ teletexTerminalIdentifier$ telephoneNumber$internationaliSDNNumber$ facsimileTelephoneNumber$seeAlso$roleOccupant$preferredDeliveryMethod$$$$$street$ postOfficeBoxpostalCodepostalAddressphysicalDeliveryOfficeName $ ou $ st $ lorganizationalUnitou$descriptionuserPassword$ searchGuide $ seeAlso$ businessCategory$ x121Address$ registeredAddress$ destinationIndicator$preferredDeliveryMethod$ telexNumber$ teletexTerminalIdentifier$ telephoneNumber$internationaliSDNNumber$ facsimileTelephoneNumber$street$postOfficeBox$ postalCode$ postalAddress$ physicalDeliveryOfficeNapersoncn snme$st$l$descriptionuserPassword$ telephoneNumber$seeAlso$descriptionTop(全部类的基类)七、 常用名目效劳器1:Apachedirectoryserver2:Sundirectoryserver3:openDS一个开源的,基于LDAP和DSML标准的Directoryservice。Directoryservice不仅包括Directoryserver,还有其它与directory相关的根本service:directory proxy、virtualdirctory、namespacedistribution和数据同步Directoryserver是一个可以通过网络访问,信息分级存储的数据库。OpenDS只能用在linux操作系统。该工程的地址为:“:///“:///4:NetscapeDirectoryServer5:WindowAD八、 Apachedirectoryserver安装与使用1:下载ApacheDS地址为:“:///apacheds/1.5/“:///apacheds/1.5/2:ApacheDSApacheDS安装完成后要启动ApacheDS效劳。路径如下:掌握面板---治理工具---效劳--ApacheDirectoryserverApacheDS103893:安装Apachedirectorystudio。下载地址同上。该软件是ApacheDS的一个客户端工具。用于连接ApacheDS,搜寻,更,删除,添加数据。安装时也没有特别设置,请按默认设置安装该软件。4:使用Apachedirectorystudio连接ApacheDS步骤如下:第一步:在菜单栏中选择LDAP菜单下的NewConnection选项其次步:在下面的对话框中输入相应的值。第三步DN和密码。在ApacheDS安装完成后,已经创立了几个DIT〔名目信息树ApacheDS的话一般会连接如下输入的根节点的DN密码为:secret。固然可以在第一个选项框中选择NoAuthentication。这是不需要输入下面的验证信息。这种登录术语匿名登录。权限受限制。第四步。连接完成后,如以下图:图中消灭了apahceDS安装默认创立的三个名目信息树第五步:创立Partition。ApacheDS中的名目信息是保存在Partition中的。所以在创立的名目树之前首先要创立Partition。创立Partition的一个方法是修改server.xml配置文件。该文件路径如下:C:\ProgramFiles\ApacheDirectoryServer\instances\default\conf\在该文件中找到Partitions元素。添加<jdbmPartition>元素。第六步:创立完成之后,重启Apachedirecoryserver效劳。在Apachedirectorystudio视图中看到结果如下,在右侧栏中我们可以看到我们刚刚添加的Partition。但是在左侧栏中,我们并没有看到该名目分支存在。由于,必需要创立一个ContextEntry。第七步:创立ContextEntry123456九、 LDAP应用场景使用JNDI操作名目效劳预备连接名目效劳器的相应配置文件〔以ApacheDS为例〕pertiesjava.naming.security.authentication=simplejava.naming.security.principal=uid=liujz,dc=example,dc=comjava.naming.security.credentials=123456创立测试类privatestaticDirContextctx=null;privateProperties ldapProps;publicLDAPTest(Properties ldapProp){This.ldapProp=ldapProp;}publicDirContextgetDirContext{If(ctx=null){ctx=newInitialDirContext(ldapProps);}returnctx;}//LDAP效劳器中查询符合条件的EntrypublicvoidqueryEntry{SearchControlssc=newSearchControls;//用于设置查询范围//有三种查询范围SUBTREE_SCOPE:表示在以指定对象为根的子树中查找,可以返回多个元素ONLEVEL_SCOPE:表示指定对象极其直接子实体OBJECT_SCOPE:表示返回指定对象。sc.setSearchScope(SearchControls.SUBTREE_SCOPE);//该方法有单个参数,第一个参数是DN是一种相对的,由于依据配置文件,我们已经连接到根DN为dc=example,dc=com的名目树上,所以一下方法查询的Entry的DN为ou=Account,dc=example,dc=com。其次个参数是过滤器,相当于SQL中的where子句。第三个参数为查询掌握Stringdn=“ou=Account”;Stringfilter=“ou=Account”;NamingEnumerationresult=getDirContext.search(dn,filter,sc);While(result.hasMore){SearchResultentry=(SearchResult)result.next;Attributesattrs=entry.getAttributes;Attributeattr=attrs.get(“ou”);System.out.println(“ou=”+attr.get);}}//LDAP效劳器中添加EntryPublicvoidaddEntry{//在ou=accountdc=exampledc=com节点下添加一个子节点。其RDN为cn=liujianzhongAttributesattrs=newBasicAttributes;attrs.put(“cn”,”liujianzhong”);attrs.put(“sn”,”liu”);attrs.put(“userpassword”,”123456”);BasicAttributeobjectClassSet=newBasicAtrribute(“objectclass”);objectClassSet.add(“top”):objectClassSet.add(“person”);objectClassSet.add(“inetOrgPerson”);attrs.put(objectClassSet);ctx.createSubContext(“cn=liujianzhong,ou=Account”,attrs);}//删除LDAP名目效劳器中指定的Entry,假设该节点为叶子节点则直接删除,否则要先得到该节点下的全部叶子节点,然后从最底层的叶子节点删除,直到删除全部叶子节点为止PublicvoiddelEntry{//删除叶子节点StringDN=“cn=liujianzhong,ou=Account”;getDirC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论