一个LDAP的条目:
dn: cn=Ray D. Jones, ou=Employees, o=Acme, c=US
objectClass: inetOrgPerson
cn: Ray D. Jones
sn: Jones
telephoneNumber: 444-555-6767
mail: jonesrd@acme.com
localityName: Houston
DN是Distinguished Name、ou是orgnization unit,cn是common name
sn是surname,只是person类的一个属性,它是用ldap的模式定义出来的。
基准DN
LDAP目录树的最顶部就是根,也就是所谓的“基准DN”。基准DN通常使用下面列出的三种格式之一。假定我在名为FooBar的电子商务公司工作,这家公司在Internet上的名字是foobar.com。
o="FooBar, Inc.", c=US
(以X.500格式表示的基准DN)
在这个例子中,o=FooBar, Inc. 表示组织名,在这里就是公司名的同义词。c=US 表示公司的总部在美国。以前,一般都用这种方式来表示基准DN。但是事物总是在不断变化的,现在所有的公司都已经(或计划)上Internet上。随着 Internet的全球化,在基准DN中使用国家代码很容易让人产生混淆。现在,X.500格式发展成下面列出的两种格式。
o=foobar.com
(用公司的Internet地址表示的基准DN)
这种格式很直观,用公司的域名作为基准DN。这也是现在最常用的格式。
dc=foobar, dc=com
(用DNS域名的不同部分组成的基准DN)
就象上面那一种格式,这种格式也是以DNS域名为基础的,但是上面那种格式不改变域名(也就更易读),而这种格式把域名:foobar.com分成两部分 dc=foobar, dc=com。在理论上,这种格式可能会更灵活一点,但是对于最终用户来说也更难记忆一点。考虑一下foobar.com这个例子。当 foobar.com和gizmo.com合并之后,可以简单的把“dc=com”当作基准DN。把新的记录放到已经存在的dc=gizmo, dc=com目录下,这样就简化了很多工作(当然,如果foobar.com和wocket.edu合并,这个方法就不能用了)。如果LDAP服务器是新安装的,我建议你使用这种格式。再请注意一下,如果你打算使用活动目录(Actrive Directory),Microsoft已经限制你必须使用这种格式。
二.LDAP存储结构
一棵目录信息数由若干条目(Entry)组成,每个条目有惟一的标识名DN,一个条目是一个对象,每个条目由多个“属性(Attribute)”组成,每个属性由一个类型和一个到多个值组成,每个属性可以对应一个或多个“值(Value)”。
三.LDAP的基本概念
目录数据库是以目录信息数(Directory Information Tree,DIT)为存储方式的数型存储结构。
*常用关键字及其对应的含义
【dc】-- Domain Component-- 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com
【uid】-- User ID-- 用户ID,如“tom”
【ou】-- Organization Unit-- 组织单位,类似于Linux文件系统中的子目录,是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“market”
【sn】-- Surname-- 姓,如“Johansson”
【dn】-- Distinguished Name-- 唯一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个唯一的名称,如“uid=tom,ou=market,dc=example,dc=com”,在一个目录树中DN总是唯一的
【rdn】-- Relative dn-- 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=ton”或“cn=Thomas Johansson”
【c】-- Country -- 国家,如“CN”或“US”等
【o】-- Organization -- 组织名,如“Example,Inc.”
四.规划目录树
要实现LDAP,首先要规划目录树,一个灵活且易于扩展的目录树可以减少后期维护目录树的工作量。
通过例子说明。假设有一个名为Example的公司(DNS名为example.com),其组织结构如下:
(1)首先要为目录树建立一个“根(Root)”。根是目录树的最顶层,后面建立的所有对象都是基于这个根的,所以它也称为基准DN。它可以有3种格式表示。
*使用X.500标准格式:o=example,c=CN。
*直接使用公司的DNS域名:o=example.com。
*使用公司的DNS域名的不同部分:dc=example,dc=com。
第3种格式更利于以后目录树的扩展,如将来Example公司合并了abc公司,之需要将dc=com最为根即可,不需要修改原有的结构。
(2)公司中的部门作为OU,如“ou=market”。OU是目录树的分枝节点,下面可以包含其他分枝节点或叶子节点。
(3)用户是目录树的最底层(即叶子节点),可以根据用户所在的部门将其放置在不同的OU中,使用uid或cn描述都可以,如“uid=tom”或“cn=Thomas Johansson”。
CN,OU,DC都是LDAP连接服务器的端字符串中的区别名称(DN,distinguished name);
LDAP连接服务器的连接字串格式为:ldap://servername/DN
其中DN有三个属性,分别是CN,OU,DC
LDAP是一种通讯协议,如同HTTP是一种协议一样的!
在 LDAP 目录中。
DC (Domain Component)
CN (Common Name)
OU (Organizational Unit)
An LDAP 目录类似于文件系统目录. 下列目录:
DC=redmond,DC=wa,DC=microsoft,DC=com
如果我们类比文件系统的话,可被看作如下文件路径:
Com/Microsoft/Wa/Redmond
例如:CN =test,OU =developer,DC =domainname,DC =com
在上面的代码中cn=test 可能代表一个用户名, ou=developer 代表一个active directory中的 组织单位。这句话的含义可能就是说明test这个对象处在domainname. com域的developer组织单元中。
DC=domainname,DC=com是以DNS格式为基础,不改变域名,而把域名分割成两个部分domainname和com,然后写成DC=domainname,DC=com,这样就能够保证基准DN良好的可读性。
如果某个基准DN是采用了某个学校的网络域名,假设是school.edu.cn,那么这个基准DN就应该写成dc=school,dc=edu,dc=cn了。