OpenLDAP
				快速上手
		
		
				
						   Ben 
				的项目里面要用到
				OpenLDAP,
				我的项目里面也要用到
				LDAP,
				所以这
				2
				天集中看了一下
				LDAP
				相关的内容。做了个笔记,也算是为人类知识的积累做点或有或无的贡献。
		
		
				
						   OpenLDAP
				的官方站点是
				
						http://www.openldap.org
				
				。
		
		
				
						       
				
				上面有个
				QuickStart,
				我将大致按照这个来讲解。
		
		
				一、
				安装
				
						
				
				在官方站点上发布的是
				linux/unix
				下的
				OpenLDAP
				源文件,当然也很容易找到
				windows
				系统下的版本。笔者学习安装的就是
				windows
				版本的。
		
		
				二、
				配置
		
		
				OpenLDAP
				有
				2
				个用户最关注的配置文件。
		
		
				一个是
				
						slapd.conf
				
				
						,
				
				
						在他里面定义了最基本的
				
				
						DN
				
				
						以及管理员的账号和密码。
				
				
						
								
								
								
						
				
		
		
				
						另一个是
				
				
						LDIF
				
				
						的文件。在它里面可以配置所有的用户和组织。
				
				
						
								
								
						
				
		
		
				
						1、  
				
				
						我们先来了解
				
				
						LDAP
				
				
						的相关概念。
				
				
						
								
						
				
				
						我们知道
				
				
						LDAP
				
				
						的全称为(
				
				Lightweight Directory Access Protocol
				
						),即轻量级目录访问协议。
				
				
						
								
								
						
				
		
		
				
						
								Ldap
						
				
				
						
								是怎样的一个结构呢
						
				
				
						?用官方的话说:“
				
				In LDAP, directory entries are arranged in a hierarchical tree-like structure. Traditionally, this structure reflected the geographic and/or organizational boundaries. Entries representing countries appear at the top of the tree. Below them are entries representing states and national organizations. Below them might be entries representing organizational units, people, printers, documents, or just about anything else you can think of..
				
						”他是一个树状的结构。每一个节点被称为一个
				
				
						Entry
				
				
						。这些
				
				
						Entry
				
				
						有着有趣的含义。
				
				
						
								
								
						
				
		
		
				
						下面是他的
				
				
						2
				
				
						个实例。一个反映了
				
				geographic
				,一个反映了
				organizational
				。
				
						 
						
                                                           传统命名

                                                           网络命名
				我们来看看个个节点的定义方式。
		
		
				
						每个
						Entry
				
				
						都有一个自己得一个标示
				
				,我们把他叫
				DN(Distinguished Name)
				,这个
				dn
				包含了一个
				RDN
				(
				Relative Distinguished Name
				)。在上面的第二个图例
				中,Barbara Jensen的RDN是
				
						uid=babs,他的dn是
				
				
						uid=babs,ou=People,dc=example, dc=com。
				
		
		
				
						
								每个节点都需要一个类别
						
				
				
						,
				
				
						这个类别信息用objectClass来表示。ObjectClass就是该节点的schema,他定义了该节点该有和不该有的属性。默认的objectClass都在schema/core.schema中有定义。如果在你的配置过程中出现了关于找不到objectClass的问题,您不妨参看一下这里面有没有你用到的objectClass
				
				
						. 在schema文件夹下还有其他一些schema文件,你也可以定义自己的schema.想要加载其他的schema,你可以在slapd.conf文件中用include加入.如:include  ./schema/core.schema.
				为了方便识别,其实我们在DN里面用的都是objectClass的简写形式。如:ou代表organizationUnit,c代表country,st代表state,dc代表??等。
				
						
								
								
						
				
		
		
				
						2、  
				
				
						来看看
						slapd.conf
				
				
						这个文件
				
				
						
								
						
				
				
						这个文件的主要信息是如下几行:
				
				
						
								
								
						
				
		
		
				
						database bdb 
				
		
		
				
						suffix "dc=<MY-DOMAIN>,dc=<COM>" 
				
		
		
				
						rootdn "cn=Manager,dc=<MY-DOMAIN>,dc=<COM>" 
				
		
		
				
						rootpw secret 
				
		
		
				
						directory /usr/local/var/openldap-data
				
		
		
				
						定义了数据库,最基本的后缀,管理员的
				
				
						dn
				
				
						和密码,以及数据存放路径。
				
				
						
								
								
						
				
		
		
				
						编辑好这个文件,我们就可以启动了。
				
				
						
								
								
						
				
		
		
				
						如果你把
				
				
						ldap
				
				
						安装为
				
				
						windows
				
				
						服务,你可以像我一样启动:
				
				
						
								
								
						
				
		
		
				
						net start OpenLDAP-slapd
				
		
		
				
						 
				
		
		
				
						3、  
				
				
						我们主要操作的就是这个
				
				
						LDIF
				
				
						文件
				
				
						
								
						
				
				
						我们需要在这个文件里面加入所需要的
				
				
						dn.
				
		
		
				
						注意,因为我们在
				
				
						slapd.conf
				
				
						中定义了一个
				
				
						base dn
				
				
						和一个管理员
				
				
						dn
				
				
						,所以我们需要首先把这
				
				
						2
				
				
						个
				
				
						dn 
				
				
						加进来。
				
				
						
								
								
						
				
		
		
				
						dn: dc=<MY-DOMAIN>,dc=<COM> 
				
		
		
				
						objectclass: dcObject 
				
		
		
				
						objectclass: organization 
				
		
		
				
						o: <MY ORGANIZATION> 
				
		
		
				
						dc: <MY-DOMAIN> 
				
		
		
				
						 
				
		
		
				
						dn: cn=Manager,dc=<MY-DOMAIN>,dc=<COM> 
				
		
		
				
						objectclass: organizationalRole 
				
		
		
				
						cn: Manager
				
		
		
				
						保存为
				
				
						ldif
				
				
						后缀的文件。然后我们用命令把这些信息加到
				
				
						ldap
				
				
						中去:
				
				
						
								
								
						
				
		
		
				
						ldapadd -x -D "cn=Manager,dc=<MY-DOMAIN>,dc=<COM>" -W -f example.ldif
				
		
		
				
						让我们来查看以下我们的设置是否出现问题:
				
		
		
				
						ldapsearch -x -b 'dc=example,dc=com' '(objectclass=*)'
				
		
		
				
						上面的是
				
				
						linux/unix
				
				
						下的命令,
				
				
						windows
				
				
						下我们需要做点更改:
				
				
						
								
								
						
				
		
		
				
						ldapsearch -x -b dc=example,dc=com (objectclass=*)
				
		
		
				
						对,就是去掉引号。
				
				
						
								
								
						
				
		
		
				
						为了察看方便,笔者建议使用
				
				
						GUI
				
				
						工具来查看,比如笔者使用的
				
				
						Softerra LDAP Browser 2.6
				
				
						。
				
				
						
								
								
						
				
		
		
				 
		
		
				三、
				和
				java
				集成
				
						
				
				我们的
				ldap Server
				已经搭建起来了,我们需要在我们的
				java
				程序中访问这个服务。
		
		
				Openldap.org
				上有没有讲?有讲?下面介绍的
				JLDAP
				就是干这个的。
		
		
				我们需要看一下“
				Java LDAP Overview
				”里面的内容。内容不是很多,但很实用。
		
		
				要在
				java
				中访问
				ldap
				,我们需要一套
				api,
				你可以在下面的网站上获得:
		
		
				
						http://developer.novell.com/wiki/index.php/LDAP_Classes_for_Java
				
		
		
				在下在的文件里面有许多的例子,在
				novell
				的网站上也有很多的例子。我就不讲了。
				Try yourself
				。