1.
什么是LDAP?
LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP。LDAP目录也是一种类型的数据库,但是不是关系型数据库。
2.
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的存储规则
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
="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基础培训资料** **1. LDAP简介** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于组织和检索分布式信息。它源于X.500标准,但比X.500更为简洁,并允许根据需求进行定制。...
### LDAP基础知识教程知识点详解 #### 一、信息模型 **1.1 LDIF** - **概念**: LDIF(LDAP Data Interchange Format)是一种用于表示LDAP目录条目的标准文本格式。它主要用于目录数据的导入和导出操作,方便数据...
**LDAP基础教程** LDAP,全称轻量级目录访问协议(Lightweight Directory Access Protocol),是一种用于访问和管理分布式目录服务的开放标准协议。这个基础教程将带你深入理解LDAP的概念、结构以及如何在实际环境...
"LDAP基础知识教程.pdf"则可能是一个更全面的教程,涵盖了以下主题: 1. LDAP协议基础:解释LDAP的请求/响应模型,操作类型(如bind、search、modify)及其语法。 2. LDAP目录模型:介绍Distinguished Name (DN)、...
LDAP基础概念 - **DN(Distinguished Name)**:是每个LDAP条目的唯一标识符,由一系列属性组成,例如`cn=John Doe,ou=Employees,dc=example,dc=com`。 - **OU(Organizational Unit)**:是目录结构中的逻辑分组,...
### LDAP基础知识 1. **目录服务**:目录服务是存储和管理网络对象信息的一种服务,如用户账号、组、计算机、打印机等。与数据库不同,目录服务通常设计为快速查找和访问少量信息,而不是存储大量数据。 2. **LDAP...
#### 二、LDAP基础知识 在深入了解示例代码之前,我们先简要介绍一些LDAP的基础概念: 1. **DN (Distinguished Name)**:标识目录条目的唯一名称,由一系列属性组成。 2. **RDN (Relative Distinguished Name)**:...
LDAP基础** LDAP的核心在于提供快速、简单的数据访问。在企业环境中,LDAP目录可以存储多种类型的信息,如电子邮件地址、邮件路由信息、人力资源数据、公钥和联系人列表等。通过整合LDAP,企业内的应用程序无论...
**一、LDAP基础** 1. **目录服务概念**:目录服务是存储和组织网络资源(如用户账户、组、设备等)的一种方式。与数据库不同,目录服务通常用于快速查找信息,而不是处理事务或存储大量复杂数据。 2. **目录结构**...
1. **LDAP基础概念**:理解什么是目录服务,为什么需要LDAP,以及它与数据库的区别。目录服务是轻量级的数据存储,设计为快速查找和检索信息,而非像数据库那样进行大量读写操作。 2. **LDAP架构**:包括服务器、...
LDAP基础知识** LDAP目录服务通常用于存储组织的数据,如员工信息、权限设置、邮件列表等,这些数据可以通过标准的查询语言进行访问。它采用树形结构来组织信息,每个节点称为条目,包含一系列属性,属性值可以是...
Spring Security LDAP基础** Spring Security LDAP提供了一套API,用于连接和操作LDAP目录。它支持多种LDAP操作,如搜索、添加、删除和修改条目。通过这个模块,开发人员可以轻松地将应用程序的用户认证过程与LDAP...
**LDAP基础概念** 1. **目录服务**: LDAP提供的一种服务,它存储和组织数据,如用户账户、组、网络设备等,以供快速查找和访问。这种服务通常是非关系型的,以提高查询性能。 2. **目录结构**: LDAP目录采用树形...
这使得企业能够利用已有的LDAP基础设施,无缝地将禅道融入其IT生态系统,提高用户管理和权限控制的效率。值得注意的是,在实施过程中,需要根据企业的具体需求和 LDAP 服务器的配置进行相应的调整,确保 LDAP 集成既...
#### 一、LDAP基础知识介绍 **LDAP**(Lightweight Directory Access Protocol)是一种基于X.500标准的目录访问协议,但进行了简化以便更适合互联网环境下的轻量级目录服务。LDAP提供了一种高效、可扩展的方式来...
1. **LDAP基础知识** - LDAP目录结构:类似于文件系统,由DN(Distinguished Name)定义,例如`cn=John Doe, ou=Employees, o=MyCompany, c=US`,其中每个部分代表一个对象类。 - LDAP对象类:定义了可存储在目录...
LDAP基础知识 LDAP是一种基于X.500标准的目录服务协议,用于存储和检索分布式数据。它的主要特点是查询速度快,支持多种查询方式,如基于属性的查询。在企业环境中,LDAP常用于集中式用户身份管理,提供单点登录...
**LDAP基础知识** 1. **LDAP协议**: LDAP是基于X.500标准的一种轻量级目录访问协议,常用于管理和访问分布式目录服务。它提供了一种标准的、开放的方式来存储和检索各种信息,如用户账号、组织结构等。 2. **目录...