LDAP基础篇

LDAP简述

LDAP轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。

简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。

LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。

性质

从另一个意义上 LDAP是实现了指定的数据结构的存贮,它是一种特殊的数据库。但是LDAP和一般的数据库不同,明白这一点是很重要的。 LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多

就象SybaseOracleInformixMicrosoft的数据库管理系统(DBMS)是用于处理查询和更新关系型数据库那样,LDAP服务器也是用来处理查询和更新LDAP目录的。换句话来说LDAP目录也是一种类型的数据库,但不是关系型数据库。要特别注意的是,LDAP通常作为一个 hierarchical(分层,即树形结构的存储)数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。

现在LDAP技术发展得很快令人激动人心。在企业范围内实现LDAP可以让运行在几乎所有计算机平台上的所有的应用程序从LDAP目录中获取信息。LDAP目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表,等等(这点很重要,这对于了解ldap适用于存储什么,如何使用来说无疑是很有帮助的)。通过把LDAP目录作为系统集成中的一个重要环节,可以简化员工在企业内部查询信息的步骤,甚至连主要的数据源都可以放在任何地方。

优势

l         跨平台

LDAP最大的优势是:可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录。而且也很容易定制应用程序为它加上LDAP的支持。

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

l         费用及维护

不象很多商用的关系型数据库,你不必为LDAP的每一个客户端连接或许可协议付费。大多数的LDAP服务器安装起来很简单,也容易维护和优化。

l         复制技术

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

l         允许使用ACI

 

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

LDAP存储什么数据

LDAP对于这样存储这样的信息最为有用:也就是数据需要从不同的地点读取,但是不需要经常更新。例如,这些信息存储在LDAP目录中是十分有效的:

l         公司员工的电话号码簿和组织结构图

l         客户的联系信息

l         计算机管理需要的信息,包括NIS映射、email假名,等等

l         软件包的配置信息

l         公用证书和安全密匙

什么时候该用LDAP存储数据

大多数的LDAP服务器都为读密集型的操作进行专门的优化。因此,当从LDAP服务器中读取数据的时候会比从专门为OLTP优化的关系型数据库中读取数据快一个数量级。也是因为专门为读的性能进行优化,大多数的LDAP目录服务器并不适合存储需要需要经常改变的数据。例如,用LDAP服务器来存储电话号码是一个很好的选择,但是它不能作为电子商务站点的数据库服务器。

OpenLDAP

安装

下载OpenLDAP(可到官网去下载,不过这资源比较难找)

双击安装程序进行安装

配置

编辑sldap.confi文件

OpenLDAP的安装目录下的OpenLDAP文件中找到sldap.conf文件,使用任何一种文本编辑器开,然后找到

include include        ./schema/core.schema

在它后面添加

include ./schema/cosine.schema

include ./ schema/inetorgperson.schema

接下来的例子只需要用到以上三个 schema,当然,如果你觉得需要的话,你可以把其他的 schema 全部添加进来

include ./schema/corba.schema

include ./schema/dyngroup.schema

include ./schema/java.schema

include ./schema/misc.schema

include ./schema/nis.schema

include ./schema/openldap.schema

<这里要注意这些文件的添加的先后顺序,因为某些文件是有依赖关系,被依赖的schema必须放在前面>

配置LDAP服务器登录的rootDN、管理用户和密码(包括明文和密文)

还是在sldap.conf文件进行配置,首先找到

suffix "dc=example,dc=com" (这里我自定义为dc=teemlink,dc=com,表示:teemlink.com)

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

(这里我定义为cn=Manager,dc=teemlink,dc=com

rootpw  secret

(这里我不修改)

3条信息,其中suffix表示目录系统的根(可以自定义);rootdn表示登录服务器的用户名(其中cn=Manager表示以管理者身份登录); rootpw表示登陆者的密码(这里是明文secret),当然你也可以使用密文方式的密码,你可以使用命令slappasswd -h {md5} -s secret算出加密的密码 {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== 取代配置中的 secret

(请注意,因为我自定义了suffix,因此必须在data目录下自定义ldif文件来初始化目录数据,否则会出No Such Object的错误,因为自定义的根目录节点必须带有至少一个属性的记录数据)

配置data目录下的ldif文件(文件名可随意,我这里定义为root.ldif)

在文件中输入如下信息

dn:dc=teemlink,dc=com

objectClass:dcObject

objectClass:organization

dc:teemlink

o:teemlink

description:www.teemlink.com

启动OpenLDAP服务(这里可以设置为自启动方式,即在电脑启动时自动运行)

运行CMDOpenLDAP目录下输入slapd -d 1

用可以看到控制台下打印一片信息,openldap 默认是用的 Berkeley DB 数据库存储目录数据的。(你可以安装ldap浏览器,这些浏览器提供界面支持,我这里用到了LDAPbrowserJxplorer

LDAPbrowser界面:
LDAP基础篇_第1张图片
 

其配置如下

LDAP基础篇_第2张图片LDAP基础篇_第3张图片

Jxplorer界面

LDAP基础篇_第4张图片
 

配置如下
LDAP基础篇_第5张图片
 

 

专用名词解释:

DN=Distinguished Name 一个目录条目的名字

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

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

O=Organization 为组织名,可以364个字符长

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

L=Location 地名,通常是城市的名称

ST 州或省的名称

O=Orgnization 组织名称

OU=Orgnizagion Unit 组织单位

STREET 街道地址

UID 用户标识

这是其中一些,详细可参考OpenLDAP目录下的schema目录下的schema文件的定义,里面定义了一些自带的schema文件。

 

 

你可能感兴趣的:(LDAP基础篇)