LDAP应用技术简述(一)
时间:2008-05-22 来源:huanat
原文链接
http://www.daifusecure.com/articles/ldap.php
一、简介;
a) X500目录服务;
OSL X.500目录是基于OSI网络协议的目录服务协议,也是LDAP的前身。但是X。500的缺点是不支持TCP/IP,而是支持OSI协议,显然,在Windows等个人电脑上不可以使用OSI协议,在此前提下,也就产生了访问X500目录的网关--LDAP。
b) LDAP;
LDAP(Lightweight Directory Access Protocal, 轻型目录访问协议),是针对以X500目录为主的目录服务的前端访问协议,是OSL X.500目录访问网关。由于X500原来不是为TCP/IP网络设计的,而目录服务的最大使用者偏偏是TCP/IP客户,因此,LDAP就被设计成使用TCP/IP访问OSI 目录服务的服务协议,而随着互联网成为网络的主流,LDAP也成为一个具备目录的大部分服务的协议。
LDAP主要解决目录服务的前端访问形式,而不是对目录服务本身制定的的协议,理论上,LDAP支持后台的任何存储形式,包括X500,关系数据库,文本数据库或文件目录等。LDAP继承了X500目录的大部分定义,无论是访问样式还是语法都与X500相似。
c) Active Directory 活动目录;
Active Directory (AD)是微软为.net中的对象访问定义的目录服务,包括目录服务本身,以及客户端API(ADSI)。Ad并不是LDAP在.net中的实现,而是X500在.net中的实现,但AD前端支持并主要以LDAP形式进行访问。完整地说,AD是基于微软自身定义的X500扩展的一系列Schema实现的X500目录服务及相关的访问控制工具的集合,其前端支持LDAP的查询,目的是对.net中涉及的所有网络对象提供目录服务。各个schema在一个树森林中是唯一的。
普通的LDAP客户端工具与AD并不兼容。WINDOWS2000自带有一些LDAP客户端工具,包括ldifde.exe,ldp.exe。并提供专门的LDAP程序接口ASDI。同时,可以在WINDOWS管理台上添加AD管理snap-in,配合已有的AD基本管理工作。使用以上工具可以得到微软样式的详情,但总的来说,WINDOWS2000原则上不鼓励用户在AD的基础上进一步的开发,没有开发更多的资料。
WINDOWS2000中,访问AD记录的API被集成到了内核,服务于WINDOWS2000从主机权限和对象管理,直接网络的权限和对象管理,同时API细节没有对外公开。因此,某种程度上,AD是一个只对WINDOWS2000有用的目录服务,AD连同访问API,形成一个基于X500-LDAP的孤岛,从一开始就没有打算与其他厂商产品有兼容的余地,这也是微软的一贯风格。参考:
http://www.microsoft.com/windows2000/en/server/help/default.asp? url=/windows2000/en/server/help/sag_ADschema_Intro.htm
http://msdn.microsoft.com/library/default.asp? url=/library/en-us/netdir/ad/schema_implementation.asp
AD在WINDOWS2000中注册表中的位置是:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\
使用AD时,用户可以自行在微软样式的基础上添加新的类和属性,微软称这个就是schema的增添,这与UNIX环境下有一些不同,用户余地较少。如果真的需要添加,可以使用按:
http://www.microsoft.com/ windows2000/techinfo/planning/activedirectory/adschemasteps.asp
的指示一步步做,也可以预先做好ldif文件,使用ldifde.exe一次性地进行添加,效果是一样的。 在默认的状况下,WINDOWS2000的AD初始具备三个上下文对象:
dc=domainname; 微软定义domainname必须是examples.com格式,即dc=example,dc=com;
cn=Configuration,dc=example,dc=com; 这一条目和上下文存储设置信息;
cn=schema,cn=configuration,dc=example,dc=com;
二、服务器实现方式;
用户可以选择购买商业的LDAP服务器,如SUN的iplanet directory server;但在大部分情况下,使用openldap足以完成所需要的目录服务工作。另外,包括windows 2000以及如domino6这样的系统软件中,通常也都集成了一个自身使用的LDAP服务器。
三、数据结构原理;
不少LDAP开发人员喜欢把LDAP与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。 LDAP是实现了指定的数据结构的存贮,它包括以下可以用关系数据库实现的结构要求:树状组织、条目认证、类型定义、许可树形记录拷贝。
a) 树状组织;
无论是X500还是LDAP都是采用树状方式进行记录。每一个树目录都有一个树根的入口条目,子记录全部是这一根条目的子孙。这是目录与关系数据类型最大的区别(关系数据库的应用结构也可实现树状记录)。因此,把目录看作是更高级的树状数据库也未尝不可,只不过除此外,它不能实现关系存贮的重要功能。
b) 条目和条目认证;
LDAP是以条目作为认证的根据。ROOT的权限认证与目录本身无关,但除此外所有条目的认证权限由条目本身的密码进行认证。LDAP可以配置成各种各样不同的父子条目权限继承方式。
每一个条目相当于一个单一的平面文本记录,由条目自身或指定的条目认证进行访问控制。因此,LDAP定义的存贮结构等同于一批树状组织的平面数据库,并提供相应的访问控制。
条目中的记录以名-值对的形式存在,每一个名值对必须由数据样式schema预定义。因此,LDAP可以看作是以规定的值类型以名值对形式存贮在一系列以树状组织的平面数据库的记录的集合。
c) 数据样式(schema);
数据样式schema是针对不同的应用,由用户指定(设计)类和属性类型预定义,条目中的类(objectclass)和属性必须在在LDAP服务器启动时载入内存的schema已有定义。因此,AD活动目录中的条目记录就必须符合Active Directory的schema中。如果已提供的schema中的定义不够用,用户可以自行定义新的schema.
在
这里
中可以看到常用的schema。
d) 类型分类(objectClass);
条目中的记录通过objectclass实现分类,objectClass是一个继承性的类定义,每一个类定义指定必须具备的属性。如某一条目指定必须符合unit类型,则它必须具备chinacfirm类形指定的属性,象法人代表什么的。
通过objectclass分类,分散的条目中的记录就实际上建立了一个索引结构,为高速的读查询打下了基础。Objectclass也是过滤器的主要查询对象。
e) 过滤器和语法;
LDAP是一个查询为主的记录结构,无论是何种查询方式,最终都由过滤器缺点查询的条件。过滤器相当于SQL中的WHERE子句。任何LDAP的类过滤和字符串都必须放在括号内,如(objectclass=*),指列出所有类型的记录(不过分类)。
可以使用=,>=,
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=739358
相关阅读 更多 +