LDAP 入门知识

LDAP的基本概念
LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,是一种基于 客户机/服务器模式的目录服务访问协议.其实是一话号码簿,LDAP是一种特殊的数据库。

LDAP 目录的优势
LDAP协议是跨平台的和标准的协议,因此应用程序就不用为LDAP目录放在什么样的服务器上操心了。
LDAP服务器可以用 “推”或“拉”的方法复制部分或全部数据,例如:可以把数据“推”到远程的办公室,以增加数据的安全性。复制技术是内置在LDAP服务器中的而且很容易配 置。

LDAP同步配置:
# Where to store the replica logs for database #1
#replogfile     /var/lib/ldap/master-slapd.replog

replogfile /var/lib/ldap/master-slapd.replog
replica         host=192.168.7.108:389
                binddn="cn=admin,dc=ldap,dc=monkey,dc=com,dc=de"
                bindmethod=simple credentials='password'



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

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

    * 公司员工的电话号码簿和组织结构图
    * 客户的联系信息
    * 计算机管理需要的信息,包括NIS映射、email假名,等等
    * 软件包的配置信息
    * 公用证书和安全密匙




ldap 的存储规则

Information model 描述LDAP目录结构

ldap目录结构图如下

ldap 目录的根      dc=ldap,dc=monkey,dc=com,dc=de  (基准DN)
                 /       /
ou                       users          groups
                //      /   /
ou                    user1  user2    it      other
                       //   /  /
user                             admin bird  goog   qqq



LDAP 目录树的最顶部就是根,也就是所谓的“基准DN”。
基准DN通常使用下面列出的三种格式之一
1)以X.500格式表示的基准DN :o="monkey.com", c=de
2)用公司的Internet地址表示的基准DN:o=monkey.com.de
3)用 DNS域名的不同部分组成的基准DN,这也是现在最常用的格式:dc=monkey,dc=com,dc=de

在根目录下,要把数据从逻 辑上区分开。大多数LDAP目录用OU从逻辑上把数据分开来。OU表示 “Organization Unit”,在X.500协议中是用来表示公司内部的机构:销售部、财务部, 等等。现在LDAP还保留ou=这样的命名规则,但是扩展了分类的范围,可以分类为:ou=people, ou=groups, ou=devices,等等。更低一级的OU有时用来做更细的归类。例如:LDAP目 录树(不包括单个条目)可能会是这样的:

dc=ldap,dc=monkey, dc=com,dc=de
    ou=groups
        ou=it
        ou=purchase
        ou=administration
    ou=customer
        ou=usa
        ou=asia
        ou=japan
    ou=vendor
       ou=usa
       ou=asia
       ou=japan

一个单条LDAP记录就是一个条目,即目录条目.目录条目的组成如下:
dn: uid=goog,ou=Users,dc=ldap,dc=monkey,dc=com,dc=de (条目名)
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: sambaSamAccount
cn: goog
sn: goog
uid: goog
uidNumber: 1027
gidNumber: 513
homeDirectory: /home/goog
loginShell: /bin/nologin
gecos: System User
description: System User
sambaSID: S-1-5-21-2655127250-259968048-1391940258-3054
sambaPrimaryGroupSID: S-1-5-21-2655127250-259968048-1391940258-513
displayName: System User
sambaPwdMustChange: 2147483647
sambaPasswordHistory: 00000000000000000000000000000000000000000000000000000000
 00000000
sambaAcctFlags: [U          ]
sambaLMPassword: 44EFCE164AB921CAAAD3B435B51404EE
sambaNTPassword: 32ED87BDB5FDC5E9CBA88547376818D4
sambaPwdCanChange: 1178523372
sambaPwdLastSet: 1178523372
userPassword:: e1NNRDV9Q3dOM3BEaStHcnVvMUMrUTEzZm1BU1BDRVl3PQ==


每个条目都有一个条目名, 即DN(Distinguished Name)
条目是具有区别名DN(Distinguished Name)的属性(Attribute)集合,
属性由类型(Type)和多个值(Values)组成,类型规定了属性允许存放的值的约束条件,同 时也规定了该类型的数据进行比较时规则,LDAP中是用语法(syntax)这一概念来表式属性的取值约束和比较规则的。常用的LDAP Syntax是字符型,为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法 (Syntax), 而不是关系数据库提供的整数、浮点数、日期、货币等类型,同样也不提供象关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查询和修改操作比 一般是大于10:1),

在属性的基础上LDAP还用schema进一步约束目录条目。schema是一种类型定义机制,每种类型定义又成 为objectClass,它规定一个该类型的目录条目实例必须的和可选的属性等其它 约束。和面向对象的编程语言相似,objectClass支持继承,并且所有的objectClass都是 top的子类型,因为top定义了必须的属性objectClass,所以所有的目录条目实例都有objectClass这个属性。常见的 objectClass有:
InetOrgPerson, OrganizationalUnit, Organization
extensibleObject 允许任何属性。

Example:

objectclass ( 1.3.6.1.4.1.42.2.27.4.2.10
        NAME 'corbaContainer'
        DESC 'Container for a CORBA object'
        SUP top
        STRUCTURAL
        MUST cn )

对象类有五个组 件:OID(对象标识)、唯一名称、父对象(SUP)、任何需要的属性(MUST)和允许的属性列表(MAY)。OID 是由 LDAP 目录的内部数据库机制使用的数据标识符。 从概念上讲,它们与 IP 地址相似,因为每个对象类都必须有一个唯一数字。并且象 DNS 和 IP 之间的关系那样,由创建它们的个人进行注册,并由这些人“拥有”。有关注册 OID 的更多信息,请参阅 Internet Assigned Numbers Authority(或 IANA)。


LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。 LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库

专用名词解释:
DN=Distinguished Name 一个目录条目的名字
CN=Common Name 为用户名或服务器名,最长可以到80个字符,可以为中文;
OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;
O=Organization 为组织名,可以3—64个字符长
C=Country 为国家名,可选,为2个字符长
L=Location 地名,通常是城市的名称
ST 州或省的名称
O=Orgnization 组织名称
OU=Orgnizagion Unit 组织单位
STREET 街道地址
UID 用户标识


LDAP 客户端和LDAP服务器端交互的一般过程

   1. LDAP客户端发起连接请求与LDAP服务器建立会话,LDAP的术语是绑定(binding)。在 建立绑定时客户端通常需要指定访问用户,以便能够访问服务器上的目录信息。
   2. LDAP客户端发出目录查询、新建、更新、删除、移动目录条目、比较目录条目等操作   3. LDAP客户端结束与服务器的会话,即解除绑定(unbinding)

LDAP的操作基本上有三类:查询、更新和认证
查询是 LDAP中最复杂的操作,它允许客户端指定查询的起点、查询的深度、属性需要满足的条件以及最终返回的目录条目所包含的属性。
查询的起点是通过 base DN来指定的,查询的深度即范围有三种baseObject, singleLevel, wholeSubtree。baseObject只对base DN指定的目录条目进行查询;singleLevel只对base DN的直接子节点进行查询; wholeSubtree对base DN(包括base DN)的所有子节点查询。属性需要满足的条件是用search filter来表达的。此外,还可以指定别名的解析(Aliase Dereferrencing)和查询的结果集大小限定和查询时间限定。
search filter的基本语法是:
attribute operator value
主要的操作符有:=, >=, <=, =*, ~=其中=*可以表示匹配子字符串,~=近似相等。例子有sn=*表示sn有值的所有目录条目。cn=J*Smi*, sn~=smit。
多 个简单filter可以用关系操作符组成复合表达式,基本语法是:
(&(filter1)(filter2)...(filtern))
(|(filter1)(filter2)...(filtern))
(!(filter))
例 子有:(|(sn=Miler)(sn=Smith)), (|(sn=Miler)(&(ou=Austin)(sn=Smith)))

更 新操作
LDAP定义了以下更新操作:
add 创建新的目录条目到目录树种
delete 删除目录条目,只有叶子节点可以删除,删除别名并不影响被引用的节点
modify 修改目录条目的属性,包括增加、删除属性
modify DN 移动目录树

认证操作
LDAP定义了以下认证操作:
bind 该操作用于在LDAP的客户端和服务器之间建立会话
unbind 该操作用于结束LDAP会话
abandon 该操作用于放弃前一个操作



LDAP权限管理

可以 通过ACL(访问控制表,Access Control List)来控制对目录的访问。
access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdMustChange
        by dn="cn=admin,ou=DSA,dc=ldap,dc=monkey,dc=com,dc=de" write
        by dn="cn=smbldap-tools,ou=DSA,dc=ldap,dc=monkey,dc=com,dc=de" write
        by dn="cn=nssldap,ou=DSA,dc=ldap,dc=monkey,dc=com,dc=de" write
        by self write
        by anonymous auth (need to bind)
        by * none (no access)

LDAP+APACHE

如果让ldap 支持apache,你需要做:
1) 在编译apache 时,加上以下参数:--with-ldap --enable-ldap --enable-auth-ldap
2)配置 apache ,在httpd.conf里加上如下配置:

<Directory "/www">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all

###### ldap config
AuthType Basic
AuthLDAPEnabled on
AuthName "Secure Access"
AuthLDAPBindDN cn=admin,dc=ldap,dc=monkey,dc=com,dc=de
AuthLDAPBindPassword xxxxxx
AuthLDAPURL ldap://192.168.7.108:389/ou=Users,dc=ldap,dc=monkey,dc=com,dc=de?uid?sub?(objectClass=*)
require valid-user
 
</Directory>


LDAP+PHP
如果让ldap 支持php,你需要做:
1)在编译php时,加上以下参数:--with-ldap=/usr/local/ldap

LDAP 技术总结 第一章LDAP 有关技术介绍......................................................................................................... 3 第一节X.500 目录服务.......................................................................................................... 3 第二节什么是LDAP?......................................................................................................... 3 第三节Sun One Directory Server 目录服务.......................................................................... 4 第四节Windows Active Directory 活动目录........................................................................4 第五节LDAP 目录服务的优势..............................................................................................6 第六节LDAP 安全和访问控制............................................................................................10 第七节LDAP 目录树结构....................................................................................................11 第八节LDAP 复制............................................................................................................... 21 第二章LDAP 存储结构原理.......................................................................................................22 第一节树状组织...................................................................................................................23 第二节条目和条目认证.......................................................................................................23 第三节数据样式(schema)............................................................................................... 24 第四节类型分类(objectClass)..............................................................................................24 第五节过滤器和语法...........................................................................................................24 第六节树移植.......................................................................................................................25 第七节LDIF 交换文件......................................................................................................... 26 第八节JAVA 或CORBA 对象串行化存储......................................................................... 26 第三章LDAP 目录客户端访问工具............................................................................................27 第一节openldap 命令行....................................................................................................... 27 第二节ldapbrowser JAVA 开源LDAP 客户端工具............................................................29 第三节ldapadministrator.......................................................................................................29 第四节浏览器.......................................................................................................................29 第五节ldapexplorer(PHP 编写的LDAP 客户端工具)........................................................31 第六节ADAMRedistx86chs.exe...........................................................................................31 第七节Sun One Directory Console.......................................................................................31 第四章LDAP 目录服务器...........................................................................................................32 第一节Sun One Directory Server......................................................................................... 32 第二节openLdap Directory Server....................................................................................... 32 第三节Windows Active Directory Server.............................................................................32 第五章LDAP 程序访问技术详解................................................................................................32 第一节Sun 公司的JNDI 与各厂商实现的LDAP 函数库关系....................................... 32 1 Novell 函数库:.......................................................................................................... 32 2 Netscape 函数库:...................................................................................................... 33 3 Mozilla 函数库:........................................................................................................ 33 第二节访问LDAP 数据的API-JNDI...............................................................................33 1 J2SE 和JNDI 关系..................................................................................................... 33 2 JNDI API...................................................................................................................... 34 3 JNDI 类库下载............................................................................................................ 35 4 JNDI 对目录服务的一些基本操作........................................................................... 35 第三节访问LDAP 数据的API—JLDAP......................................................................... 144 第四节访问LDAP 数据的API-JDBCLDAP................................................................ 149 1 JDBCLDAP 的出现解决了许多人操作LDAP 的方便性,但是我们必须知道他的 优势和劣势:...............................................................................................................150 2 JDBCLDAP 包分析................................................................................................. 150 3 JDBCLDAP 操作目录数据库................................................................................ 151 第六章Sun One Dirctory Server 专题....................................................................................... 161 第一节安装.........................................................................................................................161 1 安装前准备...............................................................................................................161 2 更改服务器的主DNS 后缀..................................................................................... 162 3 运行安装文件中的setup.exe 文件......................................................................... 163 第二节卸载.........................................................................................................................176 第三节一些安装常见安装的问题及解决......................................................................... 177 1 安装时,要求录入完整的计算机名,我录入后,总是提示找不到请确认安装时, 已更改服务器的DNS 后缀......................................................................................... 177 2 安装过程中, 提示安装不成功, 后面的黑窗口提示 StringIndexOutOfBoundsException 异常。请确认你的目当服务器安装文件,没有放 在含有中文的文件路径中........................................................................................... 177 3 目录服务器安装后,我忘记了目录管理员DN 和口令。....................................177 第四节管理经验.................................................................................................................178 第五节Sun ONE 安装文件分析........................................................................................178 第六节使用目录服务经验................................................................................................. 179 第七章微软Active Directory Server 专题...............................................................................179 第一节JAVA 通过LDAP 修改windows Active Directory 域用户密码..........................179 1 注意:.......................................................................................................................179 2 具体步骤:...............................................................................................................180 第八章LDAP 技术资源............................................................................................................. 187 第一节介绍LDAP 的Roadmap & FAQ,........................................................................187 第二节免费ldap server,..................................................................................................... 187 第三节开源的ldap server.................................................................................................. 187 第四节Java 开发jndi........................................................................................................187 第五节Java 开发jldap 来开发.......................................................................................187 第六节java 开发JDBC-LDAP 来开发,.........................................................................188 第七节ldapguru...................................................................................................................188 第八节LDAPChina.com 论坛........................................................................................... 188 第九节LDAP Browser/Editor 客户端工具....................................................................... 188 第十节phpGeneral php 实现的客户端工具...................................................................... 188 第十一节LDAP Administrator 可以修改schema.............................................................189 第十二节LDAPNavigator 基于php..................................................................................189 第十三节Web2ldap.............................................................................................................189 第十四节ldap 做的user manage CA 赞助的...................................................................189 第十五节Softerra LDAP Administrator..............................................................................189
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值