Junky's IT Notebook

统计

留言簿(8)

积分与排名

WebSphere Studio

阅读排行榜

评论排行榜

学习LDAP的过程(转)

   写这篇文章,是因为,最近学习了LDAP的相关知识,因为整个学习过程都与网络有关,大量的文献资料都是从网上下载下来的。现将,我学习LDAP的过程简要列出来,目的是想为那些还没有接触和掌握LDAP的人来说,能够节约大量的时间和精力。

1、  LDAP的英文的意思我是早就接触,只是了解,并不深入,所以,这次想多了解一些,于是从网上下载了大量的资料,从理论上了解LDAP是怎么回事,如什么是LDAP?什么是X.500?X.500与LDAP是什么关系?X.500与X.509?什么是DN等,大家在网上输入关键字LDAP可以搜索到很多的相关的资料。LDAP

2、  光说不练不行,还得找一找软件,我所知道的,提供LDAP目录服务的软件有IBM domino,SUN 提供的软件,以及开源的OPENLDAP,而我手头没有安有LINUX操作系统的机器,所以,软件最好能在windows server 2003上运行。安装要简单,配置最好也要简单。于是,我从网上下载了openldap for win32的安装包。

3、  安装过程很顺利,安装好后,用netstat –an 查看,LDAP服务的389端口处于正常的侦听状态,说明服务正常启动了。

4、  根据下载的文档,修改slapd.conf配置文件,将MY-DOMAIN改为自已设定的名称,如ydzy。样例文件如下:

database bdb

suffix             "dc=ydzy,dc=com"

rootdn            "cn=Manager,dc=ydzy,dc=com"

# Cleartext passwords, especially for the rootdn, should

# be avoid. See slappasswd(8) and slapd.conf(5) for details.

# Use of strong authentication encouraged.

rootpw    secret

# The database directory MUST exist prior to running slapd AND

# should only be accessible by the slapd and slap tools.

# Mode 700 recommended.

directory ./data

# Indices to maintain

index       objectClass     eq

5、  然后,按照OPENLDAP快速帮助的说明,自已制作了根DN的ydzy.ldif文件。

dn: dc=ydzy,dc=com

objectclass: dcObject

objectclass: organization

o: Example Company

dc: ydzy

 

dn= cn=Manager,dc=ydzy,dc=com

objectclass: organizationalRole

cn: Manager

这里要说明一下,由于本人下载的LDAP文档,绝大部分都是针对LINUX环境,提供的添加条目到LDAP目录服务器的命令是LINUX环境下的,所以,照抄时,总是不对。在WINDOWS命令行状态,要用双引号来括住一些信息。如上面的添加条目信息的命令为:

Ldapadd –x –D “cn=Manager,dc=ydzy,dc=com” –w secret –f ydzy.ldif

6、  在设定了最基本的条目后,我试着从VB工程中,用LDAP的ACTIVEX控件来连接LDAP服务器,无论在connect函数中怎么设定,就是报协议错,为此,花费了我不少时间和精力,我是在VB6中,通过AXLDAP控件连接OPENLDAP服务器的。这当中,最大的问题,就是LDAP服务器的管理员用户名和口令是什么。尽管后来才知道,不是连接LDAP服务器的用户名与口令不正确,而是控件不支持我所安装的OPENLDAP服务器的版本所致。

7、  尽管,OEPNLDAP提供了命令行的ldapsearhc工具,但对初学者来讲,仍然,不形象直观,于是,上网搜索,从http://www.ldapadministrator.com/下载了windows版的ldap客户端软件。这真是个好东西,下载下来,安装好后,进行简单的设置,那个OPENLDAP里面的内容就展现在我面前了。友情提醒一下,最好在下载OPENLDAP的时侯,就下载相应的客户端工具,这对于学习和理解LDAP的相关知识很有好处的,本人就是通过这款软件才迅速解决了许多问题。例如,前面所说的用户名/口令的问题,因在该软件中,要连接LDAP服务器,必须提供相应的用户名和口令,于是,我就试着填入相应的用户名和口令,终于明白,slapd.conf文件中的rootdn后面的一长串就是管理员的用户名,而rootpw后的明文secret就是管理员的密码,所以,象命令中的-D “cn=Manager,dc=ydzy,dc=com” –w secret 就是通常的用户名和口令的格式。

8、  前面,我们刚学会添加根DN的方法,在实际应用中,需要添加各种各样的信息到LDAP中,而要添加信息,必须掌握写作LDIF文件的方法,具体的LDIF的格式要求,从下载的文档,大家可以看到。我根据一篇文档的介绍,将公司员工的邮件地址存入LDAP服务器,以便于在OUTLOOK等工具中可以查询。于是,我编写了以下格式的文件:

dn: cn=lxj,dc=ydzy,dc=com

objectclass: inetorgPerson

cn: lxj

cn: luoxiaojun

sn: luo

mail: lxj@192.1.3.211

 

dn: cn=lxr,dc=ydzy,dc=com

objectclass: inetorgPerson

cn: lxr

cn: lixinyue

sn: li

mail: lxr@192.1.3.211

就是向目录服务器,添加两个条目。

然后,就用ldapadd 命令向目录服务器加,始终报语法错误,这是怎么回事呢?左看右看,这时,我通过LDAP客户端软件,查看其中的模式,发现没有inetorgperson这个模式,于是我想到,是否,应在slapd.conf中将相关的模式文件包含进来,于是打开slapd.conf文件,发现,默认的配置文件中,只有一个core.schema包含了进来,而在openldap的安装文件夹下,可以看到schema文件夹,于是,将相应的inetorgperson模式文件添加到slapd.conf文件中。重启openldap服务器,再运行添加条目的命令,成功,通过LDAP客户端工具,可以看到,几条信息已经成功地添加到LDAP服务器中。

9、  我在网上,也看到一些文章讲LDAP应用面变窄的问题,其实,我们通过PKI,通过LDAP,我们发现,国外,似乎在追求一种基础架构,即公共,标准,安全。LDAP中能存储的在关系统数据库基本上都可以存储,但关系数据库无法做到作为一种公共设施,轻便,便于实施,所以,从追求标准化来看,LDAP将来将是信息基础构件,就象家里用的灯泡一样,而不是应用越来越窄,相反,会得到很广的应用。比如,微软的activedirectory活动目录,不就是一个例证吗?

10、              通过X.500或LDAP的条目DN可以和X.509数字证书绑定在一起,便于用户的查询。这种应用是较好的一种组合。

11、              服务器提供了主从服务器的复制功能,确保了LDAP的稳定性和可靠性,实现起来也很容易。LDAP

posted on 2007-06-06 13:01 junky 阅读(1283) 评论(0)  编辑  收藏 所属分类: database


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


网站导航: