ladp - 1. LDAP介绍
如你想要拥有完美无暇的友情,可能一辈子找不到伴侣??? LDAP是轻量目次接见和谈,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,然则简单多了并且可以按照须要定制。与X.500不合,LDAP支撑TCP/IP, 这对接见Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相干的RFC都可以在LDAPman RFC网页中找到。
简单说来,LDAP是一个获得关于人或者资料的集中、静态数据的快速体式格式。
LDAP是一个用来公布目次信息到很多不合伙源的和谈。凡是它都作为一个集中的地址本应用,不过按照组织者的须要,它可以做得加倍强大。
1.2. LDAP是德律风簿
LDAP其实是一德律风簿,类似于我们所应用诸如NIS(Network Information Service)、DNS (Domain Name Service)等收集目次,也类似于你在花圃中所看到的树木。
1.3. LDAP是不是数据库
不少LDAP开辟人员喜好把LDAP与关系数据库比拟,认为是另一种的存贮体式格式,然后在读机能长进行斗劲。实际上,这种对比的根蒂根基是错误的。 LDAP和关系数据库是两种不合层次的概念,后者是存贮体式格式(同一层次如网格数据库,对象数据库),前者是存贮模式和接见和谈。LDAP是一个比关系 数据库抽象层次更高的存贮概念,与关系数据库的查询说话SQL属同一级别。LDAP最根蒂根基的情势是一个连接数据库的标准体式格式。该数据库为读查询作 了优化。是以它可以很快地获得查询成果,不过在其它方面,例如更新,就慢得多。
从另一个意义上 LDAP是实现了指定的数据布局的存贮,它是一种特别的数据库。然则LDAP和一般的数据库不合,熟悉打听这一点是很首要的。 LDAP对查询进行了优化,与写机能比拟LDAP的读机能要优良很多。
就象Sybase、Oracle、Informix或Microsoft的数据库经管体系(DBMS)是用于处理惩罚查询和更新关系型数据库那 样,LDAP办事器也是用来处理惩罚查询和更新LDAP目次的。换句话来说LDAP目次也是一种类型的数据库,但不是关系型数据库。要希罕重视的 是,LDAP凡是作为一个hierarchal数据库应用,而不是一个关系数据库。是以,它的布局用树来默示比用表格好。正因为如许,就不克不及用SQL 语句了。
ladp - 2. LDAP的特点
真的猛士,敢于直面暗澹的人生,敢于看重淋漓的鲜血。
2.1. LDAP的上风
2.1.1 跨平台
LDAP最大的上风是:可以在任何策画机平台上,用很轻易获得的并且数量络续增长的LDAP的客户端法度接见LDAP目次。并且也很轻易定制应用法度为它加上LDAP的支撑。
LDAP和谈是跨平台的和标准的和谈,是以应用法度就不消为LDAP目次放在什么样的办事器上费神了。实际上,LDAP获得了业界的广泛承认,因为它是 Internet的标准。产商都很愿意在产品中参加对LDAP的支撑,因为他们底子不消推敲另一端(客户端或办事端)是怎么样的。LDAP办事器可所以任 何一个开来源代码或商用的LDAP目次办事器(或者还可能是具有LDAP界面的关系型数据库),因为可以用同样的和谈、客户端连接软件包和查询号令与 LDAP办事器进行交互。与LDAP不合的是,若是软件产商想在软件产品中集成对DBMS的支撑,那么凡是都要对每一个数据库办事器零丁定制。
2.1.2 费用及保护
不象很多商用的关系型数据库,你不必为LDAP的每一个客户端连接或容许和谈付费。
大多半的LDAP办事器安装起来很简单,也轻易保护和优化。
2.1.3 复制技巧
LDAP办事器可以用"推"或"拉"的办法复制项目组或全部数据,例如:可以把数据"推"到长途的办公室,以增长数据的安然性。复制技巧是内置在 LDAP办事器中的并且很轻易设备。若是要在DBMS中应用雷同的复制功能,数据库产商就会要你付出额外的费用,并且也很难经管。
2.1.4 容许应用ACI
LDAP容许你按照须要应用ACI(一般都称为ACL或者接见把握列表)把握对数据读和写的权限。例如,设备经管员可以有权改变员工的工作地址和办公室 号码,然则不容许改变记录中其它的域。ACI可以按照谁接见数据、接见什么数据、数据存在什么处所以及其它对数据进行接见把握。因为这些都是由LDAP目 次办事器完成的,所以不消愁闷在客户端的应用法度上是否要进行安然搜检。
2.2. LDAP存储什么数据
LDAP对于如许存储如许的信息最为有效:也就是数据须要从不合的地址读取,然则不须要经常更新。例如,这些信息存储在LDAP目次中是十分有效的:
l 公司员工的德律风号码簿和组织布局图
l 客户的接洽信息
l 策画机经管须要的信息,包含NIS映射、email化名,等等
l 软件包的设备信息
l 公用证书和安然密匙
2.3. 什么时辰该用LDAP存储数据
大多半的LDAP办事器都为读密集型的操纵进行专门的优化。是以,当从LDAP办事器中读取数据的时辰会比从专门为OLTP优化的关系型数据库中读取数 据快一个数量级。也是因为专门为读的机能进行优化,大多半的LDAP目次办事器并不合适存储须要须要经常改变的数据。例如,用LDAP办事器来存储德律风 号码是一个很好的选择,然则它不克不及作为电子商务站点的数据库办事器。
若是下面每一个题目的答案都是"是",那么把数据存在LDAP中就是一个好主意。
l 须要在任何平台上都能读取数据吗?
l 每一个零丁的记录项是不是每一天都只有很少的改变?
l 可以把数据存在平面数据库(flat database)而不是关系型数据库中吗?换句话来说,也就是不管什么范式不范式的,把所有器材都存在一个记录中(差不久不多只要满足第一范式)。
最后一个题目可能会唬住一些人,其实用平面数据库去存储一些关系型的数据也是很一般的。例如,一条公司员工的记录就可以包含经理的登录名。用LDAP来 存储这类信息是很便利的。一个简单的断定办法:若是可以把保数据存在一张张的卡片里,就可以很轻易地把它存在LDAP目次里。
3.1 信息模型:描述LDAP的信息默示体式格式
在LDAP中信息以树状体式格式组织,在树状信息中的根蒂根基数据单位是条目,而每个条目由属性构成,属性中存储有属性值;LDAP中的信息模式,类似 于面向对象的概念,在LDAP中每个条目必须属于某个或多个对象类(Object Class),每个Object Class由多个属性类型构成,每个属性类型有所对应的语法和匹配规矩;对象类和属性类型的定义均可以应用持续的概念。每个条目创建时,必须定义所属的对 象类,必须供给对象类中的必选属性类型的属性值,在LDAP中一个属性类型可以对应多个值。
在LDAP中把对象类、属性类型、语法和匹配规矩 统称为Schema,在LDAP中有很多体系对象类、属性类型、语法和匹配规矩,这些体系Schema在LDAP标准中进行了规定,同时不合的应用范畴也 定义了本身的Schema,同时用户在应用时,也可以按照须要自定义Schema。这有些类似于XML,除了XML标准中的XML定义外,每个行业都有本 身标准的DTD或DOM定义,用户也可以自扩大;也如同XML,在LDAP中也激劝用户尽量应用标准的Schema,以加强信息的互联互通。
在Schema中最难懂得的是匹配规矩,这是LDAP中为了加快查询的速度,针对不合的数据类型,可以供给不合的匹配办法,如针对字符串类型的相等、模糊、大于小于均供给本身的匹配规矩。
3.2 定名模型:描述LDAP中的数据如何组织
LDAP中的定名模型,也即LDAP中的条目定位体式格式。在LDAP中每个条目均有本身的DN和RDN。DN是该条目在全部树中的独一名称标识,RDN是条目在父节点下的独一名称标识,如同文件体系中,带路径的文件名就是DN,文件名就是RDN。
3.3 功能模型:描述LDAP中的数据操纵接见
在LDAP中共有四类10种操纵:查询类操纵,如搜刮、斗劲;更新类操纵,如添加条目、删除条目、批改条目、批改条目名;认证类操纵,如绑定、解绑定; 其它操纵,如放弃和扩大操纵。除了扩大操纵,别的9种是LDAP的标准操纵;扩大操纵是LDAP中为了增长新的功能,供给的一种标准的扩大框架,当前已经 成为LDAP标准的扩大操纵,有批改暗码和StartTLS扩大,在新的RFC标准和草案中正在增长一些新的扩大操纵,不合的LDAP厂商也均定义了本身 的扩大操纵。
3.4 安然模型:描述LDAP中的安然机制
LDAP中的安然模型首要经由过程身份认证、安然通道和接见把握来实现。
3.4.1 身份认证
在LDAP中供给三种认证机制,即匿名、根蒂根基认证和SASL(Simple Authentication and Secure Layer)认证。匿名认证即不合错误用户进行认证,该办法仅对完全公开的体式格式实用;根蒂根基认证均是经由过程用户名和暗码进行身份辨认,又分为简单 暗码和择要暗码认证;SASL认证即LDAP供给的在SSL和TLS安然通道根蒂根基长进行的身份认证,包含数字证书的认证。
3.4.2 通信安然
在LDAP中供给了基于SSL/TLS的通信安然保障。SSL/TLS是基于PKI信息安然技巧,是今朝Internet上广泛采取的安然办事。 LDAP经由过程StartTLS体式格式启动TLS办事,可以供给通信中的数据保密性、完全性保护;经由过程强迫客户端证书认证的TLS办事,同时可以 实现对客户端身份和办事器端身份的双向验证。
3.4.3 接见把握
固然LDAP今朝并无接见把握的标准,但从一些草案中或是事实 上LDAP产品的接见把握景象,我们不丢脸出:LDAP接见把握异常的灵活和雄厚,在LDAP中是基于接见把握策略语句来实现接见把握的,这不合于现有的 关系型数据库体系和应用体系,它是经由过程基于接见把握列表来实现的,无论是基于组模式或角色模式,都摆脱不了这种限制。
在应用关系型数据库 体系开辟应用时,往往是经由过程几个固定的数据库用户名接见数据库。对于应用体系本身的接见把握,凡是是须要建树专门的用户表,在应用体系内开辟针对不实 用户的接见把握授权代码,如许一旦接见把握策略变革时,往往须要代码进行变革。总之一句话,关系型数据库的应用顶用户数据经管和数据库接见标识是分别的, 错杂的数据接见把握须要经由过程应用来实现。
而对于LDAP,用户数据经管和接见标识是一体的,应用不须要关怀接见把握的实现。这是因为在LDAP中的接见把握语句是基于策略语句来实现的,无论是接见把握的数据对象,还是接见把握的主体对象,均是与这些对象在树中的地位和对象本身的数据特点相干。
在LDAP中,可以把全部目次、目次的子树、制订条目、特定条目属性集或合适某过滤前提的条目作为把握对象进行授权;可以把特定用户、属于特定组或所有目次用户作为授权主体进行授权;最后,还可以定义对特定地位(例如IP地址或DNS名称)的接见权。
LDAP是实现了指定的数据布局的存贮,它包含以下可以用关系数据库实现的布局请求:树状组织、条目认证、类型定义、容许树形记录拷贝。
4.1 树状组织
无论是X500还是LDAP都是采取树状体式格式进行记录。每一个树目次都有一个树根的进口条目,子记录全部是这一根条目标子孙。这是目次与关系数据类 型最大的差别(关系数据库的应用布局也可实现树状记录)。是以,把目次看作是更高等的树状数据库也未尝不成,只不过除此外,它不克不及实现关系存贮的首要 功能。
4.2 条目和条目认证
LDAP是以条目作为认证的按照。ROOT的权限认证与目次本身无关,但除此外所有条目标认证权限由条目本身的暗码进行认证。LDAP可以设备成各类百般不合的父子条目权限持续体式格式。
每一个条目相当于一个单一的平面文本记录,由条目自身或指定的条目认证进行接见把握。是以,LDAP定义的存贮布局等同于一批树状组织的平面数据库,并供给响应的接见把握。
条目中的记录以名-值对的情势存在,每一个名值对必须由数据样式schema预定义。是以,LDAP可以看作是以规定的值类型以名值对情势存贮在一系列以树状组织的平面数据库的记录的凑集。
4.3 数据样式(schema)
数据样式schema是针对不合的应用,由用户指定(设计)类和属性类型预定义,条目中的类(objectclass)和属性必须在在LDAP办事器启 动时载入内存的schema已有定义。是以,AD活动目次中的条目记录就必须合适Active Directory的schema中。若是已供给的schema中的定义不敷用,用户可以自行定义新的schema.
在http://ldap.akbkhome.com/index.php中可以看到常用的schema。
4.4 对象类型(objectClass)
因为LDAP目次可以定制成存储任何文本或二进制数据,到底存什么要由你本身决意。LDAP目次用对象类型(objectclass)的概念来定义运行 哪一类的对象应用什么属性。在几乎所有的LDAP办事器中,你都要按照本身的须要扩大根蒂根基的LDAP目次的功能,创建新的对象类型或者扩大现存的对象 类型。
条目中的记录经由过程objectclass实现分类,objectClass是一个持续性的类定义,每一个类定义指定必须具备的属性。如某一条目指定必须合适某个类型,则它必须具备超类所指定的属性。
经由过程objectclass分类,分离的条目中的记录就实际上建树了一个索引布局,为高速的读查询打下了根蒂根基。Objectclass也是过滤器的首要查询对象。
4.5 过滤器和语法
LDAP是一个查询为主的记录布局,无论是何种查询体式格式,终极都由过滤器毛病查询的前提。过滤器相当于SQL中的WHERE子句。任何LDAP的类过滤和字符串都必须放在括号内,如(objectclass=*),指列出所有类型的记录(不过分类)。
可以应用=,>=,<=,~=(约便是)进行斗劲,如(number<=100)。归并前提是最怪的,必须把操纵符放在两个操纵对象的前面而不是中心,单一操纵对象用括号括起来。如
l A与B,不是A&B,而是(&(A)(B))。
l 或应用"|"默示;
l 非应用"!"默示。
l 对于"与",或"或"在操纵符后可以跟多个前提表达式,但非后则只参是单个表达式。
详见RFC1558。
4.6 树移植
LDAP最首要的特点和请求并不是读机能,而是扩大性。这一特点是经由过程树移植和树复制实现的。按LDAP的RFC请求,LDAP目次应当可以随便率 性地在不合的目次间连接、归并并实现主动复制,及主动性同步。这意味着用户可以在任一LDAP中接见条目,而不消管此中某一项目组是否复制自全世界另一目 次中的记录,同时另一目次中的记录同样在正常运作。
这一特点若是在关系数据库中实现,意味着要应用法度化的非规范化预复制。类似于汇总账目标设计。
4.7 LDIF互换文件
LDIF是LDAP商定的记录互换格局,以平面文本的情势存在,是大项目组LDAP内容互换的根蒂根基,如拷贝、添加、批改等操纵,都是基于LDIF文件进行操纵。
4.8 JAVA或CORBA对象串行化存储
收集高效力的接见加上JAVA的跨平台才能,当把JAVA或CORBA对象串行化后存储到LDAP目次上时,可以产生非同一般的集成结果--实际上,这恰是EJB和.NET的收集定位根蒂根基技巧。
应用JAVA或CORBA对象存储时,必须起首让LDAP办事支撑该对象定义,也就是说包含qmail.schema或corba.schema。
JAVA必须存储在objectclass=javacontainer的条目中,并且必须带有cn属性,这意味着除非该JAVA类专门实现了 DirContext接口,对于大多半JAVA类来说,只能采取DirContext庖代Context实现bind的添加操纵。取出JAVA类相对要简 单得多,只需应用context.lookup()获得该对象的句柄,然后强迫造型成所须要的对象就可以了,如:
Person p=(Person)contex.lookup("cn=elvis,dc=daifu,dc=com");
这个句法在EJB的法度中,是经常用到的。
应用CORBA的跨说话性质,应用CORBA存储对象比JAVA加倍诱人,这意味着所存储的对象可以被任何说话编写的客户端接见。其实,微软的.net 说到底也很是简单,无非是把COM对象存储到微软自家的目次ActiveDirectory里面,从而可以在收集局限内应用任何微软平台的说话进行对象接 见罢了。众所周知,COM就是与CORBA相对的微软规范。
应用对象串行化技巧,可以把常用对象如某个打印机,某个客户直接存储到LDAP 中,然后快速获取该对象的引用,如许,就比把对象信息存储到关系数据库中,分别取出属性,然后再初始化对象操纵的做法,效力要高得多了。这是LDAP今朝 比通俗关系数据库存储要优良的处所,而对象数据库还不成熟
ladp - 3. LDAP的根蒂根基模型
?
ladp - 4. LDAP数据布局
?
?
?
?
http://www.hudong.com/wiki/ladp
?
?MRMY