OpenLdap使用手册


一、文档概述

本文从介绍ldap入手,讲述了ldap的使用场合,并进一步的指导用户进行openldap安装与配置。是新手入门的一个教程。

 

二、LDAP简介

2.1    LDAP介绍

LDAP的英文全称是Lightweight Directory AccessProtocol,它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。LDAP目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表,等等。通过把LDAP目录作为系统集成中的一个重要环节,可以简化员工在企业内部查询信息的步骤,甚至连主要的数据源都可以放在任何地方。

2.2    LDAP优劣

目录服务的数据类型主要是字符型,为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax),而不是关系数据库提供的整数、浮点数、日期、货币等类型,同样也不提供象关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能。
      LDAP最大的优势是:可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录。而且也很容易定制应用程序为它加上LDAP的支持。

LDAP在查询时是做过优化的,因此查询速度快,但是在更新时相对关系型数据库要慢得多

 

2.3    LDAP协议

LDAP协议是跨平台的和标准的协议,因此应用程序就不用为LDAP目录放在什么样的服务器上操心了。实际上,LDAP得到了业界的广泛认可,因为它是Internet的标准。厂商都很愿意在产品中加入对LDAP的支持,因为他们根本不用考虑另一端(客户端或服务端)是怎么样的。LDAP服务器可以是任何一个开放源代码或商用的LDAP目录服务器(或者还可能是具有LDAP界面的关系型数据库),因为可以用同样的协议、客户端连接软件包和查询命令与LDAP服务器进行交互。与LDAP不同的是,如果软件厂商想在软件产品中集成对DBMS的支持,那么通常都要对每一个数据库服务器单独定制。不象很多商用的关系型数据库,你不必为LDAP的每一个客户端连接或许可协议付费。大多数的LDAP服务器安装起来很简单,也容易维护和优化。

 

2.4    LDAP服务器

LDAP服务器可以用“推”或“拉”的方法复制部分或全部数据,例如:可以把数据“推”到远程的办公室,以增加数据的安全性。复制技术是内置在LDAP服务器中的而且很容易配置。如果要在DBMS中使用相同的复制功能,数据库产商就会要你支付额外的费用,而且也很难管理。

 

2.5    LDAP使用权限

LDAP允许你根据需要使用ACI(一般都称为ACL或者访问控制列表)控制对数据读和写的权限。例如,设备管理员可以有权改变员工的工作地点和办公室号码,但是不允许改变记录中其它的域。ACI可以根据谁访问数据、访问什么数据、数据存在什么地方以及其它对数据进行访问控制。因为这些都是由LDAP目录服务器完成的,所以不用担心在客户端的应用程序上是否要进行安全检查。

 

2.6    LDAP目标

1、需要在任何平台上都能读取数据

2、每一个单独的记录项很少改变

3、可以把数据存在平面数据库(flat database)而不是关系型数据库中

4、如果可以把数据存在一张张的卡片里

 

 

三、安装配置

3.1    软件安装

下载:

1、下载openldap-for-windows。提供网址:http://www.userbooster.de/en/download/openldap-for-windows.aspx

2、下载jdk1.4或jdk1.5

3、下载LdapBrowser

安装:

1、将openldap一步步安装,在选择数据库类型方面使用默认的BDB

2、将jdk进行安装

3、LdapBrowser无需安装,可直接使用

 

3.2    软件配置

1、修改安装目录下的sldap.conf文件,可参照下面修改
    suffix  "dc=my-domain,dc=com"
    rootdn  "cn=Manager,dc=my-domain,dc=com"
    把这两行改为
    suffix "dc=root"
    rootdn "cn=Manager,dc=root"

2、环境变量中配置path,将jdk/bin加入(ldap运行需要jdk)

3.3    软件运行

1、openldap安装后可通过我的电脑”--“管理”--“服务”中找到并启动它,也可以在cmd中执行命令slapd -d 1(要在安装文件目录下)

2、运行LdapBrowser目录中的lbe.bat文件,将弹出连接界面

Edit:修改ldap连接的服务器信息

Connect:连接至选择的ldap服务器

 

3.4    初始数据

经过上面几步处理后,用户已经可以连接上Ldap服务器,但是会显示List failed等错误信息,出现这个问题的原因,是ldap服务中还没有创建初始数据。也就是noentry的错误。因此需要手动编写一个ldif文件初始加载进去

首先在LDAP根目录下创建一个空白文件,命名为init.ldif,输入如下信息:

dn:dc=root

objectClass:dcObject

objectClass:organization

o:feitian

 

dn:o=feitian,dc=root

objectClass:organization

o:feitian

description:thisis feitian company

 

dn:o=ifd,o=feitian,dc=root

description:信息部

objectClass:organization

o: ifd

 

dn:cn=bingwang,o=ifd,o=feitian,dc=root

description:信息部员工王兵旺

objectClass:organizationalRole

telexNumber:370

cn:bingwang

sn: 861

注意:文件中各行最后一个字符后不能出现空格

 

配置文件slapd.conf与初始文件init.ldif说明:

slapd.conf文件中suffix(后缀定义)申明的是根DN信息,init.ldif目的是为了在根下面初始化最少一个数据目录。通过LDAP Browser界面导入进去,先选中根目录,再点【LDIF】-【Import】,然后在新的弹出界面中选择创建好的init.ldif文件,确定后即可导入初始数据。
本图可以看出,cn=bingwang是最后一级,那么在申明它之前,必须先依次申明了dc=root、o=feitian、o=ifd;树形的结构展示表明了层次关系,因此在申明的时候也要体现出树形结构,如cn=bingwang申明的完整dn为:cn=bingwang,o=ifd,o=feitian,dc=root,表示cn=bingwang的上级是o=ifd,o=ifd的上级是o=feitian,o=feitian的上级是dc=root。

 

 

 

四、LDAP应用

LDAP连接服务器的连接字串格式为:ldap://servername/DN

 

4.1    LDAP常用属性

DN:Distinguished Name,可以叫做条目区分名。在一个目录中这个名称总是唯一的,也是用来标识一个节点的主要方式。它有若干属性:  

1、CN=CommonName 为用户名或服务器名,最长可以到80个字符,可以为中文;

2、OU=OrganizationUnit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;

3、DC= DomainComponent 为目录结构

4、O=Organization为组织名,可选,可以3—64个字符长

5、C=Country为国家名,可选,为2个字符长

 

4.2    LDAP Schema语法

LDAP中,schema用来指定一个目录中所包含的objects的类型(objectClass)以及每一个objectClass中的各个必备(mandatory)和可选(optional)的属性(attribute)。因此,Schema是一个数据模型,它被用来决定数据怎样被存储,被跟踪的数据的是什么类型,存储在不同的Entry下的数据之间的关系。schema需要在主配置文件slapd.conf中指定,以用来决定本目录中使用到的objectClass。管理员可以自己设计制定schema,一般包括属性定义(AttributeDefinition)、类定义(ClassDefinition)以及语法定义(SyntaxDefinition)等部分。

创建好schema文件后,将做好的schema文件拷贝到ldap的schema目录下。然后修改slapd.conf文件,将新的schema文件加入申明。

 

 

五、LDAP客户端

ldapbrowser是openldap的一个客户端管理工具,可以方便的用来操作、查看openldap中的数据。首先安装好openldap,然后双击ldap browser目录中的lbe.bat启动。下面的登陆界面中,【Host】输入openldap主机名或IP,点击【Fetch DNs】则会自动匹配到openldap在slapd.conf配置的根域。然后勾上【append base DN】,输入口令,cn=manager是openldap安装时的管理员账号。然后点击保存,回到连接界面点击【connet】。如果需要匿名登录,则选中【Anonymous bind】,需要说明的是,匿名登录只能查看数据。

 

5.1    增加目录属性

如果需要为一个元素增加Attribute,按如下操作

最后点击Apply完成Attribute增加。需要注意的是增加的属性名称一定是符合ldap标准的,或者自定义增加的,否则将会增加失败,如上图增加属性a则不能成功。具体ldap有哪些默认的属性值可以参考%openldap_home%\schema\core.schema文件。

 

 

5.2    删除目录属性

选中一个元素的Attribute,使用删除Attribute操作。

 

5.3    修改目录属性

在目录的属性上双击即可弹出修改的界面,输入新的属性值点击【Apply】即可完成属性的属性值更改。

 

5.4    增加目录

先选中需要创建子目录的该目录,然后通过下面操作,其中objectclass是在core.schema中定义的都可以使用。

 

5.5    修改目录

修改目录是针对目录的所有属性进行修改,可以参照上面的修改目录属性操作,也可以通过下面的操作

 

5.6    删除目录

先选中要删除的目录,然后进行下图操作

 

 

 

六、应用举例

通过一个例子进一步说明ldap的数据树状关系。同时展示了一个实体隶属多个机构的实现方式。

下面有一个示图。请参考

 

通过上图可以看出cn=bingwang这个实体在最末端,它的完整DN是什么呢?

dn:cn=bingwang,o=ifd,o=feitian,dc=root。

可见最顶端的根节点在表达式中写在最后的位置,其它依次类推。这里讲述的是节点的dn.如果节点本身还需要附加一些属性来丰满内容,attribute将会带来很大的实用性。比如通讯录的某个人是个节点,那么人员的地址、电话号码等就可以作为attributes。上图举例表示了用户bingwang的若干属性,其中ou属性两个,分别表示用户在ifd部门和hr部门任职。由此可见,attribute是可以一对多(一个节点多个相同属性,值各不同)。因此attributes可以充分运用于描述节点的各类信息。下面附带上图节点cn=bingwang的ldif

dn:cn=bingwang, o=ifd, o=feitian, dc=root

ou: ifd

ou: hr

description::5L+h5oGv6YOo546L5YW15pe6

objectClass:organizationalRole

telexNumber:370

cn:bingwang

 

附录:

Ldap中相关涉及的产品或技术、标准规范说明

X.500

X.500是一套已经被国际标准化组织(ISO)接受的目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是层次性的,其中的管理域(机构、分支、部门和工作组)可以提供这些域内的用户和资源信息。在PKI体系中,X.500被用来唯一标识一个实体,该实体可以是机构、组织、个人或一台服务器。X.500被认为是实现目录服务的最佳途径,但X.500的实现投资较大,并且比其他方式速度慢,而其优势具有信息模型、多功能和开放性