没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Ldap 技术文档
项目背景:
南京农业大学—网络专家软件系统
需求及过程:
手机发邮件经过邮件服务器(登录)邮件服务器经过相关的设置到 ldap 服
务器认证
方案:
根据上面的需求由于要到 ldap 服务器认证,所以 ldap 里的数据须和数据库的数
据保持同步,我们用 spring ldap 来操作 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 其实是一电话簿,类似于我们所使用诸如 NIS(Network Information
Service)、DNS (Domain Name Service)等网络目录,也类似于你在花园中所看到的
树木。
不少 LDAP 开发人员喜欢把 LDAP 与关系数据库相比,认为是另一种的存贮方式,
然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP 和关系数据库是
两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者
是存贮模式和访问协议。LDAP 是一个比关系数据库抽象层次更高的存贮概念,与关系
数据库的查询语言 SQL 属同一级别。LDAP 最基本的形式是一个连接数据库的标准方
式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,
例如更新,就慢得多。
从另一个意义上 LDAP 是实现了指定的数据结构的存贮,它是一种特殊的数据库。
但是 LDAP 和一般的数据库不同,明白这一点是很重要的。 LDAP 对查询进行了优化,
与写性能相比 LDAP 的读性能要优秀很多。
就象 Sybase、Oracle、Informix 或 Microsoft 的数据库管理系统(DBMS)是用
于处理查询和更新关系型数据库那样,LDAP 服务器也是用来处理查询和更新 LDAP
目
录
的。换句话来说 LDAP 目录也是一种类型的数据库,但不是关系型数据库。要特别注
意的是,LDAP 通常作为一个 hierarchical 数据库使用,而不是一个关系数据库。因此,
它的结构用树来表示比用表格好。正因为这样,就不能用 SQL 语句了。
现在 LDAP 技术不仅发展得很快而且也是激动人心的。在企业范围内实现 LDAP 可
以让运行在几乎所有计算机平台上的所有的应用程序从 LDAP 目录中获取信息。LDAP
目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用
密匙、联系人列表,等等。通过把 LDAP 目录作为系统集成中的一个重要环节,可以简
化员工在企业内部查询信息的步骤,甚至连主要的数据源都可以放在任何地方。
[编辑本段
]
LDAP 目录的优势
如果需要开发一种提供公共信息查询的系统一般的设计方法可能是采用基于 WEB
的数据库设计方式,即前端使用浏览器而后端使用 WEB 服务器加上关系数据库。后端
在 Windows 的典型实现可能是 Windows NT + IIS + Acess 数据库或者是 SQL 服务器,
IIS 和数据库之间通过 ASP 技术使用 ODBC 进行连接,达到通过填写表单查询数据的
功能;
后端在 Linux 系统的典型实现可能是 Linux+ Apache + postgresql,Apache 和数
据库之间通过 PHP3 提供的函数进行连接。使用上述方法的缺点是后端关系数据库的引
入导致系统整体的性能降低和系统的管理比较繁琐,因为需要不断的进行数据类型的验
证和事务的完整性的确认;并且前端用户对数据的控制不够灵活,用户权限的设置一般
只能是设置在表一级而不是设置在记录一级。
目录服务的推出主要是解决上述数据库中存在的问题。目录与关系数据库相似,是
指具有描述性的基于属性的记录集合,但它的数据类型主要是字符型,为了检索的需要
添加了 BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话
型)等语法(Syntax),而不是关系数据库提供的整数、浮点数、日期、货币等类型,
同样也不提供象关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查
询和修改操作比一般是大于 10:1),不提供事务的回滚(rollback)机制,它的数据修
改使用简单的锁定机制实现 All-or-Nothing,它的目标是快速响应和大容量查询并且提
供多目录服务器
的信息复制功能。
现在该说说 LDAP 目录到底有些什么优势了。现在 LDAP 的流行是很多因数共同作
用的结果。可能 LDAP 最大的优势是:可以在任何计算机平台上,用很容易获得的而且
数目不断增加的 LDAP 的客户端程序访问 LDAP 目录。而且也很容易定制应用程序为它
加上 LDAP 的支持。
LDAP 协议是跨平台的和标准的协议,因此应用程序就不用为 LDAP 目录放在什么
样的服务器上操心了。实际上,LDAP 得到了业界的广泛认可,因为它是 Internet 的标
准。产商都很愿意在产品中加入对 LDAP 的支持,因为他们根本不用考虑另一端(客户
端或服务端)是怎么样的。LDAP 服务器可以是任何一个开发源代码或商用的 LDAP 目
录服务器(或者还可能是具有 LDAP 界面的关系型数据库),因为可以用同样的协议、
客户端连接软件包和查询命令与 LDAP 服务器进行交互。与 LDAP 不同的是,如果软件
产商想在软件产品中集成对 DBMS 的支持,那么通常都要对每一个数据库服务器单独
定制。不象很多商用的关系型数据库,你不必为 LDAP 的每一个客户端连接或许可协议
付费 大多数的 LDAP 服务器安装起来很简单,也容易维护和优化。
LDAP 服务器可以用“推”或“拉”的方法复制部分或全部数据,例如:可以把数据“推”
到远程的办公室,以增加数据的安全性。复制技术是内置在 LDAP 服务器中的而且很容
易配置。如果要在 DBMS 中使用相同的复制功能,数据库产商就会要你支付额外的费
用,而且也很难管理。
LDAP 允许你根据需要使用 ACI(一般都称为 ACL 或者访问控制列表)控制对数据
读和写的权限。例如,设备管理员可以有权改变员工的工作地点和办公室号码,但是不
允许改变记录中其它的域。ACI 可以根据谁访问数据、访问什么数据、数据存在什么地
方以及其它对数据进行访问控制。因为这些都是由 LDAP 目录服务器完成的,所以不用
担心在客户端的应用程序上是否要进行安全检查。
LDAP(Lightweight Directory Acess Protocol)是目录服务在 TCP/IP 上的实现
(RFC 1777 V2 版和 RFC 2251
V3 版)。它是对 X500 的目录协议的移植,但是简化了实现方法,所以称为轻量
级的目录服务。在 LDAP 中目录是按照树型结构组织,目录由条目(Entry)组成,条
目相当于关系数据库中表的记录;条目是具有区别名 DN(Distinguished
Name)的属性(Attribute)集合,DN 相当于关系数据库表中的关键字(Primary
Key);属性由类型(Type)和多个值(Values)组成,相当于关系数据库中的
域(Field)由域名和数据类型组成,只是为了方便检索的需要,LDAP 中的 Type 可以
有多个 Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相
关的。LDAP 中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。
LDAP 把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系
数据库。LDAP 协议集还规定了 DN 的命名方法、存取控制方法、搜索格式、复制方法、
URL 格式、开发接口等
LDAP 对于这样存储这样的信息最为有用,也就是数据需要从不同的地点读取,但
是不需要经常更新。
例如,这些信息存储在 LDAP 目录中是十分有效的:
l 公司员工的电话号码簿和组织结构图
l 客户的联系信息
l 计算机管理需要的信息,包括 NIS 映射、email 假名,等等
l 软件包的配置信息
l 公用证书和安全密匙
什么时候该用 LDAP 存储数据
大多数的 LDAP 服务器都为读密集型的操作进行专门的优化。因此,当从 LDAP 服
务器中读取数据的时候会比从专门为 OLTP 优化的关系型数据库中读取数据快一个数量
级。也是因为专门为读的性能进行优化,大多数的 LDAP 目录服务器并不适合存储需要
需要经常改变的数据。例如,用 LDAP 服务器来存储电话号码是一个很好的选择,但是
它不能作为电子商务站点的数据库服务器。
如果下面每一个问题的答案都是“是”,那么把数据存在 LDAP 中就是一个好主意。
l 需要在任何平台上都能读取数据吗?
l 每一个单独的记录项是不是每一天都只有很少的改变?
l 可以把数据存在平面数据库(flat database)而不是关系型数据库中吗?换句话
来说,也就是不管什么范式不范式的,把所有东西都存在一个记录中(差不多只要满足
第一范式)。
最后一个问题可能会唬住一些人,其实用平面数据库去存储一些关系型的数据也是
很一般的。例如,一条公司员工的记录就可以包含经理的登录名。用 LDAP 来存储这类
信息是很方便的。一个简单的判断方法:如果可以把数据存在一张张的卡片里,就可以
很容易地把它存在 LDAP 目录里。
安全和访问控制
LDAP 提供很复杂的不同层次的访问控制或者 ACI。因这些访问可以在服务器端控
制,这比用客户端的软件保证数据的安全可安全多了。
用 LDAP 的 ACI,可以完成:
l 给予用户改变他们自己的电话号码和家庭地址的权限,但是限制他们对其它数据
(如,职务名称,经理的登录名,等等)只有“只读”权限。
l 给予“HR-admins"组中的所有人权限以改变下面这些用户的信息:经理、工作名
称、员工号、部门名称和部门号。但是对其它域没有写权限。
l 禁止任何人查询 LDAP 服务器上的用户口令,但是可以允许用户改变他或她自己
的口令。
l 给予经理访问他们上级的家庭电话的只读权限,但是禁止其他人有这个权限。
l 给予“host-admins"组中的任何人创建、删除和编辑所有保存在 LDAP 服务器中的
与计算机主机有关的信息
l 通过 Web,允许“foobar-sales"组中的成员有选择地给予或禁止他们自己读取一
部分客户联系数据的读权限。这将允许他们把客户联系信息下载到本地的笔记本电脑或
个人数字助理(PDA)上。(如果销售人员的软件都支持 LDAP,这将非常有用)
l 通过 Web,允许组的所有者删除或添加他们拥有的组的成员。例如:可以允许销
售经理给予或禁止销售人员改变 Web 页的权限。也可以允许邮件假名(mail aliase)
的所有者不经过 IT 技术人员就直接从邮件假名中删除或添加用户。“公用”的邮件列表应
该允许用户从邮件假名中添加或删除自己(但是只能是自己)。也可以对 IP 地址或主
机名加以限制。例如,某些域只允许用户 IP 地址以 192.168.200.*开头的有读的权限,
或者用户反向查找 DNS 得到的主机名必须为*.foobar 点 com。
LDAP 目录树的结构
LDAP 目录以树状的层次结构来存储数据。如果你对自顶向下的 DNS 树或 UNIX
文件的目录树比较熟悉,也就很容易掌握 LDAP 目录树这个概念了。就象 DNS 的主机
名那样,LDAP 目录记录的标识名(Distinguished Name,简称 DN)是用来读取单个
记录,以及回溯到树的顶部。后面会做详细地介绍。
为什么要用层次结构来组织数据呢?原因是多方面的。下面是可能遇到的一些情况:
l 如果你想把所有的美国客户的联系信息都“推”到位于到西雅图办公室(负责营
销)的 LDAP 服务器上,但是你不想把公司的资产管理信息“推”到那里。
l 你可能想根据目录树的结构给予不同的员工组不同的权限。在下面的例子里,资
产管理组对“asset-mgmt"部分有完全的访问权限,但是不能访问其它地方。
l 把 LDAP 存储和复制功能结合起来,可以定制目录树的结构以降低对 WAN 带宽
的要求。位于西雅图的营销办公室需要每分钟更新的美国销售状况的信息,但是欧洲的
销售情况就只要每小时更新一次就行了。
刨根问底:基准 DN
LDAP 目录树的最顶部就是根,也就是所谓的“基准 DN"。基准 DN 通常使用下面列
出的三种格式之一。假定我在名为 FooBar 的电子商务公司工作,这家公司在 Internet
上的名字是 foobar
o="FooBar, Inc.", c=US
(以 X.500 格式表示的基准 DN)
在这个例子中,o=FooBar, Inc. 表示组织名,在这里就是公司名的同义词。c=US
表示公司的总部在美国。以前,一般都用这种方式来表示基准 DN。但是事物总是在不
断变化的,现在所有的公司都已经(或计划)上 Internet 上。随着 Internet 的全球化,
在基准 DN 中使用国家代码很容易让人产生混淆。现在,X.500 格式发展成下面列出的
两种格式。
o=foobar . com
(用公司的 Internet 地址表示的基准 DN)
这种格式很直观,用公司的域名作为基准 DN。这也是现在最常用的格式。
dc=foobar, dc=com
(用 DNS 域名的不同部分组成的基准 DN)
就象上面那一种格式,这种格式也是以 DNS 域名为基础的,但是上面那种格式不
改变域名(也就更易读),而这种格式把域名:foobar 点 com 分成两部分 dc=foobar,
dc=com。在理论上,这种格式可能会更灵活一点,但是对于最终用户来说也更难记忆
一点。考虑一下 foobar 点 com 这个例子。当 foobar 点 com 和 gizmo 点 com 合并之后,
可以简单的把“dc=com"当作基准 DN。把新的记录放到已经存在的 dc=gizmo, dc=com
目录下,这样就简化了很多工作(当然,如果 foobar 点 com 和 wocket 点 edu 合并,
这个方法就不能用了)。如果 LDAP 服务器是新安装的,我建议你使用这种格式。再请
注意一下,如果你打算使用活动目录
(Actrive Directory),Microsoft 已经限制你必须
使用这种格式。
更上一层楼:在目录树中怎么组织数据
在 UNIX 文件系统中,最顶层是根目录(root)。在根目录的下面有很多的文件和
目录。象上面介绍的那样,LDAP 目录也是用同样的方法组织起来的。
在根目录下,要把数据从逻辑上区分开。因为历史上(X.500)的原因,大多数
LDAP 目录用 OU 从逻辑上把数据分开来。OU 表示“Organization Unit",在 X.500 协
议中是用来表示公司内部的机构:销售部、财务部,等等。现在 LDAP 还保留 ou=这样
的命名规则,但是扩展了分类的范围,可以分类为:ou=people, ou=groups,
ou=devices,等等。更低一级的 OU 有时用来做更细的归类。例如:LDAP 目录树(不
包括单独的记录)可能会是这样的:
dc=foobar, dc=com
ou=customers
ou=asia
ou=europe
ou=usa
ou=employees
ou=rooms
ou=groups
ou=assets-mgmt
ou=nisgroups
ou=recipes
单独的 LDAP 记录
DN 是 LDAP 记录项的名字
在 LDAP 目录中的所有记录项都有一个唯一的“Distinguished Name",也就是
DN。每一个 LDAP 记录项的 DN 是由两个部分组成的:相对 DN(RDN)和记录在
LDAP 目录中的位置。
RDN 是 DN 中与目录树的结构无关的部分。在 LDAP 目录中存储的记录项都要有
一个名字,这个名字通常存在 cn(Common Name)这个属性里。因为几乎所有的东
西都有一个名字,在 LDAP 中存储的对象都用它们的 cn 值作为 RDN 的基础。如果我把
剩余22页未读,继续阅读
资源评论
稻草人_xia
- 粉丝: 8
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功