? 果你在计机行业工作Q那么对LDAP可能早有耳闻了。想深入C解LDAP吗?那么可以好好地读一下这文章。这介l性的文章是一pd介绍如何在企? 中设计、实现和集成LDAP环境的文章的头一。主要是先让你熟悉一下LDAP的基本概念,那些比较困难的细节问题将攑ֈ以后讨论。在q篇文章中我们将? 介绍Q?/p>
? 在LDAP技术不仅发展得很快而且也是Ȁ动h心的。在企业范围内实现LDAP可以让运行在几乎所有计机q_上的所有的应用E序从LDAP目录中获取信 息。LDAP目录中可以存储各U类型的数据Q电子邮件地址、邮件\׃息、h力资源数据、公用密匙、联pMh列表Q等{。通过把LDAP目录作ؓpȝ集成? 的一个重要环节,可以化员工在企业内部查询信息的步骤,甚至q主要的数据源都可以攑֜M地方。如果Oracle、Sybase、Informix? Microsoft SQL数据库中已经存储了类似的数据Q那么LDAP和这些数据库到底有什么不同呢Q是什么让它更具优势?Ll读下去吧!
LDAP 的英文全U是Lightweight Directory Access ProtocolQ一般都UCؓLDAP。它是基于X.500标准的,但是单多了ƈ且可以根据需要定制。与X.500不同QLDAP支持TCP/IPQ? q对讉KInternet是必ȝ。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPChina.com RFC专栏中找到?/p>
? 日常交谈中,你可能会听到有些么说Q“我们要把那些东西存在LDAP中吗Q”,或者“从LDAP数据库中取出那些数据Q”,又或者“我们怎么? LDAP和关pd数据库集成在一P”。严格地_LDAPҎ不是数据库而是用来讉K存储在信息目录(也就是LDAP目录Q中的信息的协议。更为确切和正式的说法应该是象这LQ“通过使用LDAPQ可以在信息目录的正位|读取(或存储)数据”。但是,也没有必要吹毛求疵,管表达得不够准,我们也都知道Ҏ在说什么?/p>
? 象Sybase、Oracle、Informix或Microsoft的数据库理pȝQDBMSQ是用于处理查询和更新关pd数据库那PLDAP服务 器也是用来处理查询和更新LDAP目录的。换句话来说LDAP目录也是一U类型的数据库,但是不是关系型数据库。不象被设计成每分钟需要处理成百上千条? 据变化的数据库,例如Q在电子商务中经常用到的在线交易处理QOLTPQ系l,LDAP主要是优化数据读取的性能?/p>
现在该说说LDAP目录到底有些什么优势了。现在LDAP的流行是很多因素共同作用的结果。我在这里说的不q是一些基本的原因Q请你注意一下这不过是一部分原因?/p>
可能LDAP最大的优势是:可以在Q何计机q_上,用很Ҏ获得的而且数目不断增加的LDAP的客LE序讉KLDAP目录。而且也很Ҏ定制应用E序为它加上LDAP的支持?/p>
LDAP 协议是跨q_的和标准的协议,因此应用E序׃用ؓLDAP目录攑֜什么样的服务器上操心了。实际上QLDAP得到了业界的q泛认可Q因为它? Internet的标准。商都很愿意在产品中加入对LDAP的支持,因ؓ他们Ҏ不用考虑另一端(客户端或服务端)是怎么L。LDAP服务器可以是? 何一个开发源代码或商用的LDAP目录服务器(或者还可能是具有LDAP界面的关pd数据库)Q因为可以用同样的协议、客Lq接软g包和查询命o? LDAP服务器进行交互。与LDAP不同的是Q如果Y件商想在Y件品中集成对DBMS的支持,那么通常都要Ҏ一个数据库服务器单独定制?/p>
不象很多商用的关pd数据库,你不必ؓLDAP的每一个客Lq接或许可协议付贏V?/p>
大多数的LDAP服务器安装v来很单,也容易维护和优化?/p>
LDAP服务器可以用“推”或“拉”的Ҏ复制部分或全部数据,例如Q可以把数据“推”到q程的办公室Q以增加数据的安全性。复制技术是内置在LDAP服务器中的而且很容易配|。如果要在DBMS中用相同的复制功能Q数据库产商׃要你支付额外的费用,而且也很隄理?/p>
LDAP 允许你根据需要用ACIQ一般都UCؓACL或者访问控制列表)控制Ҏ据读和写的权限。例如,讑֤理员可以有权改变员工的工作地点和办公室LQ但? 不允许改变记录中其它的域。ACI可以Ҏ谁访问数据、访问什么数据、数据存在什么地方以及其它对数据q行讉K控制。因些都是由LDAP目录服务器完 成的Q所以不用担心在客户端的应用E序上是否要q行安全查?/p>
LDAP对于存储下面q样的信息最为有用,也就是数据需要从不同的地点读取,但是不需要经常更新。例如,q些信息存储在LDAP目录中是十分有效的:
? 多数的LDAP服务器都密集型的操作q行专门的优化。因此,当从LDAP服务器中d数据的时候会比从专门为OLTP优化的关pd数据库中d数据? 一个数量。也是因Z门ؓȝ性能q行优化Q大多数的LDAP目录服务器ƈ不适合存储需要经常改变的数据。例如,用LDAP服务器来存储电话L是一? 很好的选择Q但是它不能作ؓ电子商务站点的数据库服务器?/p>
如果下面每一个问题的{案都是“是”,那么把数据存在LDAP中就是一个好L?/p>
最
后一个问题可能会唬住一些hQ其实用q面数据库去存储一些关pd的数据也是很一般的。例如,一条公司员工的记录可以包含经理的d名。用LDAP来存?
q类信息是很方便的。一个简单的判断ҎQ如果可以把数据保存在一张张的卡片里Q就可以很容易地把它存在LDAP目录里?/p>
接上?/p>
LDAP目录树的l构
单条LDAP记录
定制目录的对象类
一个LDAP单个条目的例?/a>
LDAP复制
安全和访问控?/a>
LDAP 目录以树状的层次l构来存储数据。如果你对自向下的DNS树或UNIX文g的目录树比较熟悉Q也很Ҏ掌握LDAP目录树这个概念了。就象DNS的主 机名那样QLDAP目录记录的分辨名QDistinguished NameQ简UDNQ是用来d单条记录Q以及回溯到树的剙。后面会做详l地介绍?/p>
Z么要用层ơ结构来l织数据呢?原因是多斚w的。下面是可能遇到的一些情况:
LDAP目录树的最剙是根,也就是所谓的“基准DN”。基准DN通常使用下面列出的三U格式之一。假定我在名为FooBar的电子商务公司工作,q家公司在Internet上的名字是foobar.com?/p>
o="FooBar, Inc.", c=US
Q以X.500格式表示的基准DNQ?/i>
? q个例子中,o=FooBar, Inc. 表示l织名,在这里就是公司名的同义词。c=US 表示公司的总部在美国。以前,一般都用这U方式来表示基准DN。但是事物L在不断变化的Q现在所有的公司都已l(或计划)上Internet上。随着 Internet的全球化Q在基准DN中用国家代码很Ҏ让h产生h。现在,X.500格式发展成下面列出的两种格式?/p>
o=foobar.com
Q用公司的Internet地址表示的基准DNQ?/i>
q种格式很直观,用公司的域名作ؓ基准DN。这也是现在最常用的格式?/p>
dc=foobar, dc=com
Q用DNS域名的不同部分组成的基准DNQ?/i>
? 象上面那一U格式,q种格式也是以DNS域名为基的,但是上面那种格式不改变域名(也就更易读)Q而这U格式把域名Qfoobar.com分成两部? dc=foobar, dc=com。在理论上,q种格式可能会更灉|一点,但是对于最l用h说也更难记忆一炏V考虑一下foobar.comq个例子。当 foobar.com和gizmo.com合ƈ之后Q可以简单的把“dc=com”当作基准DN。把新的记录攑ֈ已经存在的dc=gizmo, dc=com目录下,q样q化了很多工作Q当Ӟ如果foobar.com和wocket.edu合ƈQ这个方法就不能用了Q。如果LDAP服务器是? 安装的,我徏议你使用q种格式。再h意一下,如果你打用活动目录(Actrive DirectoryQ,Microsoft已经限制你必M用这U格式?/p>
在UNIX文gpȝ中,最层是根目录QrootQ。在根目录的下面有很多的文g和目录。象上面介绍的那PLDAP目录也是?