拾贝壳

走过的路
随笔 - 39, 文章 - 1, 评论 - 14, 引用 - 0
数据加载中……

OpenLDAP快速上手

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

posted on 2006-08-26 08:37 binge 阅读(9149) 评论(7)  编辑  收藏 所属分类: OPEN SOURCE

评论

# re: OpenLDAP快速上手  回复  更多评论   

不深入
2006-08-27 11:05 | 笑嘻嘻系

# re: OpenLDAP快速上手  回复  更多评论   

刚学啊,感性认识先.望楼上提点一下需要深入的纲要
2006-08-28 09:35 | binge

# re: OpenLDAP快速上手  回复  更多评论   

Softerra LDAP Browser 2.6 哪有啊?
2006-11-19 16:40 | 李[匿名]

# re: OpenLDAP快速上手  回复  更多评论   

很难找到windows版本的啊,找到的也是版本太低了!不知道楼主的是那个版本的,我的是2.2.29的,但我想找一个版本高一点的。我的QQ:76988599
2007-05-29 17:49 | yeyu710

# re: OpenLDAP快速上手  回复  更多评论   

感觉不错,刚开始琢磨这个东西。。哎,学习中。。。。。
2007-07-18 17:45 | OK

# re: OpenLDAP快速上手  回复  更多评论   

其实讲解LDIF文件不如讲解schema文件来的直接。
感觉如果能从一个schema例子来讲解会比直接讲LDIF好。
2008-04-03 09:58 | chenpengyi

# re: OpenLDAP快速上手  回复  更多评论   

学习·····,有个感性认识
2008-12-03 18:03 | sss

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问