LDAP目录树的结构(转)

原创 2005年04月30日 17:20:00

LDAP目录以树状的层次结构来存储数据。如果你对自顶向下的DNS树或UNIX文件的目录树比较熟悉,也就很容易掌握LDAP目录树这个概念了。就象DNS的主机名那样,LDAP目录记录的标识名(Distinguished Name,简称DN)是用来读取单个记录,以及回溯到树的顶部。后面会做详细地介绍。

为什么要用层次结构来组织数据呢?原因是多方面的。下面是可能遇到的一些情况:


l 如果你想把所有的美国客户的联系信息都“推”到位于到西雅图办公室(负责营销)的LDAP服务器上,但是你不想把公司的资产管理信息“推”到那里。

l 你可能想根据目录树的结构给予不同的员工组不同的权限。在下面的例子里,资产管理组对“asset-mgmt”部分有完全的访问权限,但是不能访问其它地方。

l LDAP存储和复制功能结合起来,可以定制目录树的结构以降低对WAN带宽的要求。位于西雅图的营销办公室需要每分钟更新的美国销售状况的信息,但是欧洲的销售情况就只要每小时更新一次就行了。

刨根问底:基准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.comgizmo.com合并之后,可以简单的把“dc=com”当作基准DN。把新的记录放到已经存在的dc=gizmo, dc=com目录下,这样就简化了很多工作(当然,如果foobar.comwocket.edu合并,这个方法就不能用了)。如果LDAP服务器是新安装的,我建议你使用这种格式。再请注意一下,如果你打算使用活动目录(Actrive Directory),Microsoft已经限制你必须使用这种格式。

更上一层楼:在目录树中怎么组织数据

UNIX文件系统中,最顶层是根目录(root)。在根目录的下面有很多的文件和目录。象上面介绍的那样,LDAP目录也是用同样的方法组织起来的。

在根目录下,要把数据从逻辑上区分开。因为历史上(X.500)的原因,大多数LDAP目录用OU从逻辑上把数据分开来。OU表示“Organization Unit”,在X.500协议中是用来表示公司内部的机构:销售部、财务部,等等。现在LDAP还保留ou=这样的命名规则,但是扩展了分类的范围,可以分类为:ou=people, ou=groups, ou=devices,等等。更低一级的OU有时用来做更细的归类。例如:LDAP目录树(不包括单独的记录)可能会是这样的:

dc=foobar, dc=com

ou=customers

ou=asia

ou=europe

ou=usa

ou=employees

ou=rooms

ou=groups

ou=assets-mgmt

ou=nisgroups

ou=recipes

单独的LDAP记录

DNLDAP记录项的名字

LDAP目录中的所有记录项都有一个唯一的“Distinguished Name”,也就是DN。每一个LDAP记录项的DN是由两个部分组成的:相对DNRDN)和记录在LDAP目录中的位置。

RDNDN中与目录树的结构无关的部分。在LDAP目录中存储的记录项都要有一个名字,这个名字通常存在cnCommon Name)这个属性里。因为几乎所有的东西都有一个名字,在LDAP中存储的对象都用它们的cn值作为RDN的基础。如果我把最喜欢的吃燕麦粥食谱存为一个记录,我就会用cn=Oatmeal Deluxe作为记录项的RDN

l 我的LDAP目录的基准DNdc=foobar,dc=com

l 我把自己的食谱作为LDAP的记录项存在ou=recipes

l 我的LDAP记录项的RDN设为cn=Oatmeal Deluxe

上面这些构成了燕麦粥食谱的LDAP记录的完整DN。记住,DN的读法和DNS主机名类似。下面就是完整的DN

cn=Oatmeal Deluxe,ou=recipes,dc=foobar,dc=com

举一个实际的例子来说明DN

现在为公司的员工设置一个DN。可以用基于cnuidUser ID),作为典型的用户帐号。例如,FooBar的员工Fran Smith(登录名:fsmith)的DN可以为下面两种格式:

uid=fsmith,ou=employees,dc=foobar,dc=com

(基于登录名)

LDAP(以及X.500)用uid表示“User ID”,不要把它和UNIXuid号混淆了。大多数公司都会给每一个员工唯一的登录名,因此用这个办法可以很好地保存员工的信息。你不用担心以后还会有一个叫Fran Smith的加入公司,如果Fran改变了她的名字(结婚?离婚?或宗教原因?),也用不着改变LDAP记录项的DN

cn=Fran Smith,ou=employees,dc=foobar,dc=com

(基于姓名)

可以看到这种格式使用了Common NameCN)。可以把Common Name当成一个人的全名。这种格式有一个很明显的缺点就是:如果名字改变了,LDAP的记录就要从一个DN转移到另一个DN。但是,我们应该尽可能地避免改变一个记录项的DN

form:http://www.bloghome.cn/index.php?op=ViewArticle&articleId=2513&blogId=7

<script type="text/javascript"> &lt;!-- google_ad_client = "pub-9232855773311077"; google_ad_width = 250; google_ad_height = 250; google_ad_format = "250x250_as"; google_ad_type = "text_image"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "666666"; google_color_text = "000000"; //--&gt; </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9232855773311077&amp;dt=1114852795578&amp;format=250x250_as&amp;output=html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=666666&amp;color_border=FFFFFF&amp;ad_type=text_image&amp;u_h=768&amp;u_w=1024&amp;u_ah=740&amp;u_aw=1024&amp;u_cd=16&amp;u_tz=480&amp;u_his=26&amp;u_java=true" frameborder="0" width="250" scrolling="no" height="250" allowtransparency="65535"></iframe>

分布式openldap目录

1.  使用openldap做分布的时候,树最好进行统一规划,在做分布的时候,要有父亲与儿子的区别,在做完分布以后,如客户端设置了支持分布选项,无论指向哪一颗树,返回的都是一颗整树。 2.  在建分布...
  • cz_hyf
  • cz_hyf
  • 2006年02月19日 22:11
  • 3121

LDAP 管理用户(组)

LDAP 管理用户(组)LDAP实现提供被称为目录服务的信息服务,可以看做是一张特殊的数据库系统。可以有效的解决众多网络服务的用户账户问题,规定了统一的身份信息数据库、身份认证机制和接口,实现了资源和...
  • sudaxhh
  • sudaxhh
  • 2016年08月27日 12:36
  • 1843

JAVA_基本LDAP操作实例

一、简介 Lightweight Directory Access Protocol (LDAP),轻型目录访问协议是一个访问在线目录服务的协议。下面的例子中简单介绍在java中队ldap的增删...
  • baidu_18607183
  • baidu_18607183
  • 2016年04月02日 21:00
  • 5038

LDAP服务器的概念和原理简单介绍

转自http://www.open-open.com/lib/view/open1426834264554.html 1. 目录服务 目录是一个为查询、浏览和搜索而优化的专业分布式数据...
  • mawming
  • mawming
  • 2016年08月01日 18:43
  • 1473

LDAP概念和原理

什么是目录服务?     目录服务就是按照树状存储信息的模式     目录服务的特点? 目录服务与关系型数据库不同?  目录服务的数据类型主要是字符型, 而不是关系数据库提供的整数、...
  • GoodShot
  • GoodShot
  • 2016年07月03日 16:50
  • 4645

LDAP 中 CN, OU, DC 的含义

1、 LDAP的存储规则 区分名(DN,Distinguished Name) 和自然界中的树不同,文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性,这一属性...
  • educast
  • educast
  • 2015年06月14日 17:36
  • 18295

设计LDAP目录树

 LDAPChina序言:这篇文章是作者Michael Donnelly是LDAP系列文章的第二篇,同《介绍LDAP》一文一样,本篇文章也在互联网上流行很广,感谢网友Beta Xmu/Grind翻译此...
  • liuzh501448
  • liuzh501448
  • 2007年04月20日 17:42
  • 1123

java获取ldap域员工、组织信息

spring中配置如下:   ldap://192.168.35.161:389" />                                             ...
  • huahuo1315195
  • huahuo1315195
  • 2014年10月23日 20:56
  • 657

ldap组织机构同步

  • 2016年09月22日 11:16
  • 15KB
  • 下载

了解LDAP协议、数据结构与条目组件

提供:ZStack云计算 内容介绍LDAP, 全称为轻量级目录访问协议,是一项开放协议,用于通过分层目录结构对数据进行存储与检索。LDAP是一种灵活的解决方案,适用于定义各类条目及相关性质。对大多数用...
  • zstack_org
  • zstack_org
  • 2017年04月17日 09:40
  • 1978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LDAP目录树的结构(转)
举报原因:
原因补充:

(最多只允许输入30个字)