LDAP介绍
LDAP特点:
1、LDAP是一种目录服务(协议),特殊的数据库,数据读取速度高于写入速度;
LDAP做了读取的优化,读取速度优于普通关系数据库。
2、不支持事务(transactions),不能回滚(rollback);
LDAP一次事务只能修改一个条目。
3、服务器-客户端模式
4、基于条目(entries)
- 条目由属性组成
- 条目具有全局唯一标识DN(distinguished name),类似域名
- 属性由类型(Type)组成,每个类型对应一个或多个值
- 类型描绘了该信息是什么信息(电话,住址......)
- 值是真实信息,文本类型
- Attributes have a syntax which specifies what type of
- data - see Schema later on
5、条目以树形结构组织
LDAP中的DN(Distinguished Names)
1、由本层名称连接全部上级名称组成,之间用逗号分隔。
例如:ou=sina,dc=com,dc=cn
2、最左边的部分叫做相对DN(RDN:relative distinguished name);剩下的叫做Base DN
RDN:ou=sina
Base DN:dc=com,dc=cn
3、在同一个Base DN下,RDN必须唯一;这很好理解,为了保证条目DN唯一。
LDAP的Schema,ObjectClass属性
1. Schema是一组定义如何存储数据的规则,可以保证数据一致性,降低重复数据,并保证应用程序可以有一个统一的数据接口。
2. 条目的Object Class属性定义了条目需要遵守的Schema。
Schema包括:
- 必须的属性
- 全部允许的属性
- 属性如何比较
- 限定属性的类型
3. ObjectClass属性定义了条目必须的和全部允许的属性;
4. 一个条目可以有多个ObjectClass属性,必须属性和可选属性是全部ObjectClass的全集;
5. Objectclass可以继承;
6. 不能有多继承,不能重写规则。
什么时候该用LDAP存储数据?
LDAP对于存储下面这样的信息最为有用,也就是数据需要从不同的地点读取,但是不需要经常更新。例如,这些信息存储在LDAP目录中是十分有效的:
* 公司员工的电话号码簿和组织结构图
* 客户的联系信息
* 计算机管理需要的信息,包括NIS映射、email假名,等等
* 软件包的配置信息
* 公用证书和安全密匙
LDAP中常见属性
属性包括:
- 名称(name):唯一标识,不区分大小写
- Object identifier(OID):用逗号分隔的整数序列
- 属性语法:定义属性值的类型和如何比较
- 属性可以有一个或多个值
常见属性名称缩写:
|
uid |
User id |
|
|
cn |
Common Name |
|
|
sn |
Surname |
|
|
l |
Location |
|
|
ou |
Organizational Unit |
|
|
o |
Organization |
|
|
dc |
Domain Component |
|
|
st |
State |
|
|
c |
Country |
|
参考资料:
1、http://www.blogjava.net/kapok/archive/2005/05/05/4034.html
2、JAVA 连接 LDAP
http://hi.baidu.com/jiayouxiaogui/item/9ea8172eeb6716846e2cc3cd
http://blog.sina.com.cn/s/blog_52f6ead00101bj9t.html
3、Windows下安装使用openldap
http://www.duduwolf.com/wiki/2007/490.html
4、openladp for Windows的下载地址
http://download.bergmans.us/openldap/openldap-2.2.29/
LDAP v3属性
RFC中暂时没有找到明确列出LDAPv3协议标准属性的地方,在MSDN中的相关页面可以参考:
所有的Class(有一些是Windows AD专有的,注意区分): http://msdn.microsoft.com/en-us/library/ms680938%28v=VS.85%29.aspx
常用的一些Class列举如下:
- inetOrgPerson :http://msdn.microsoft.com/en-us/library/ms682282%28v=VS.85%29.aspx
- Organization: http://msdn.microsoft.com/en-us/library/ms683882%28v=VS.85%29.aspx
LDAP客户端工具
1、LDAP Browser
很好用的Java开源LDAP客户端,可以用它来熟悉和研究各种LDAP Server,包括Windows AD。http://www-unix.mcs.anl.gov/~gawor/ldap/
2、Apache Directory Studio
http://directory.apache.org/studio/
Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with ApacheDS.
3、Softerra LDAP Administrator & LDAP browser
在Windows平台上很好用的LDAP管理工具。LDAP Administrator是管理员工具,可以增删改LDAP中的数据;LDAP browser是一个只读工具。
LDAP Administrator需要注册,未注册版本有时间限制;LDAP browser完全免费。
主页地址:http://www.ldapbrowser.com/info.htm
以下内容转载自维基百科:http://zh.wikipedia.org/wiki/%E8%BD%BB%E5%9E%8B%E7%9B%AE%E5%BD%95%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE%AE
轻型目录访问协议,即Lightweight Directory Access Protocol (LDAP)是一个访问在线目录服务的协议。
目录是一组具有类似属性、以一定逻辑和层次组合的信息。常见的例子是电话簿,由以字母顺序排列的名字、地址和电话号码组成。最新版本的LDAP协议由RFC 4511所定义。
概述[编辑]
鉴于原先的目录访问协议(Directory Access Protocol即DAP)对于简单的互联网客户端使用太复杂,IETF设计并指定LDAP做为使用X.500目录的更好的途径。LDAP在TCP/IP之上定义了一个相对简单的升级和搜索目录的协议。
常用词"LDAP目录"可能会被误解,而实际并没有"LDAP目录"这么一个目录种类。通常可以用它来描述任何使用LDAP协议访问并能用X.500标识符标识目录中对象的目录。与ISODE提供的X.500协议的网关相比,尽管OpenLDAP及其来自密歇根大学的前身等的目录基本上设计成专门为LDAP访问而优化的, 但也没有比其他用LDAP协议访问的目录额外多出来所谓“LDAP目录”。
协议的第三版由Netscape的Tim Howes,ISODE的Steve Kille和Critical Angle Inc的Mark Wahl撰写。
协议内容[编辑]
LDAP目录的条目(entry)由属性(attribute)的一个聚集组成,并由一个唯一性的名字引用,即专有名称(distinguished name,DN)。 例如,DN能取这样的值:“ou=groups,ou=people,dc=wikipedia,dc=org”。
dc=org
|
dc=wikipedia
/ \
ou=people ou=groups
LDAP目录与普通数据库的主要不同之处在于数据的组织方式,它是一种有层次的、树形结构。所有条目的属性的定义是对象类object class的组成部分,并组成在一起构成schema;那些在组织内代表个人的schema被命名为white pages schema。数据库内的每个条目都与若干对象类联系,而这些对象类决定了一个属性是否为可选和它保存哪些类型的信息。属性的名字一般是一个易于记忆的字符串,例如用cn为通用名(common name)命名,而"mail"代表e-mail地址。属性取值依赖于其类型,并且LDAPv3中一般非二进制值都遵从UTF-8字符串语法。例如,mail属性包含值“user@example.com”;jpegPhotos属性一般包含JPEG/JFIF格式的图片。
LDAP目录条目可描述一个层次机构,这个结构可以反映一个政治、地理或者组织的范畴。在原始的X.500模型中,反应国家的条目位于树的顶端;接着是州或者民族组织。典型的LDAP 配置使用DNS名称作为树形结构的顶端,下列是代表人、文档、组织单元、打印机和其他任何事务的条目。
LDAP影响了后续的Internet协议,包括新版本的X.500、 Directory Services Markup Language (DSML)、Service Provisioning Markup Language (SPML) 和Service Location Protocol.
RFC[编辑]
- RFC 1777 - LDAPv2
- RFC 1778 - LDAPv2 String Representation of Standard Attribute Syntaxes
- RFC 1959 - URL Format
- RFC 1960~RFC 2254 - String Representation of LDAP Search Filters
- RFC 1823 - C API
- RFC 2247 - Use of DNS domains in distinguished names
- RFC 2251 - LDAPv3: The specification of the LDAP on-the-wire protocol
- RFC 2252 - LDAPv3: Attribute Syntax Definitions
- RFC 2253 - LDAPv3: UTF-8 String Representation of Distinguished Names
- RFC 2254 - LDAPv3: The String Representation of LDAP Search Filters
- RFC 2255 - LDAPv3: The LDAP URL Format
- RFC 2256 - LDAPv3: A Summary of the X.500(96) User Schema for use with LDAPv3
- RFC 2829 - LDAPv3: Authentication Methods for LDAP
- RFC 2830 - LDAPv3: Extension for Transport Layer Security
- RFC 3377 - LDAPv3: Technical Specification
- RFC 2307 - Using LDAP as a Network Information Service
产品[编辑]
LDAP从下面厂商获得广泛支持:
- Apache (通过Apache目录服务器)
- Apple (通过Open Directory)
- AT&T
- Banyan
- HP
- IBM/Lotus
- ISODE (通过M-Vault server)
- Microsoft (通过Active Directory)
- Netscape (现在是Sun Microsystems和Red Hat的产品)
- Novell (通过eDirectory)
- OctetString (通过VDE服务器)
- Oracle (通过Oracle Internet Directory)
- Red Hat (通过Fedora目录服务器)
- 西门子公司 (通过DirX服务器)
- Sun (通过iPlanet目录服务器)
此外还有开源/自由软件的实现——如OpenLDAP Apache HTTP Server使用代理服务器 (通过模块mod_proxy)支持LDAP。
外部链接[编辑]
- 软件
- Linux LDAP HOWTO
- LDAP文章、链接和白皮书
- LDAP 软件和工具
- LDAP (v3) Revision (ldapbis) Working Group
- What is LDAP?
- Nice Neat示例介绍LDAP
- Using OpenLDAP - 在Debian GNU/Linux安装OpenLDAP
- LDAP Linux鉴权 - 将LDAP集成到PAM
- C#LDAP库.
- 火箭科学家的LDAP
- PerLDAP 1.4的LDAP实现
- The importance of LDAP Tom Jackiewicz关于LDAP的说明
- 了解LDAP - 设计与实现 IBM红皮书
浙公网安备 33010602011771号