本节课的内容 ldap 服务器介绍 建立 dc=bjsxt,dc=com ldap 服务器 使用 java...
Post on 19-Dec-2015
363 views
TRANSCRIPT
![Page 1: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/1.jpg)
本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。
![Page 2: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/2.jpg)
LDAP 的概述 LDAP ( Lightweight Directory Acess Protocol )是
轻量级目录访问协议, 轻量相对于 X500 目录协议说的。
背景知识 上世纪 80 年代,国际电报电话协商委员会( CCITT ),需
要一个空白页目录,能够查找电话号码和电子邮件 ; 国际标准组织 ISO 开发基于七层网络参考模型 OSI 目录服务(开发出 DNS ),最后两家整合产生了 X500 。
X500 是针对 OSI ,占用很多网络资源,最后简化发展出 LDAP 。
![Page 3: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/3.jpg)
选择 LDAP 服务器的依据If the answer to each of the following questions is Yes,
then storing your data in LDAP is a good idea. Would you like your data to be available cross-platform? Do you need to access this data from a number of
computers or applications? Do the individual records you're storing change a few times
a day or less, on average? could you effectively store all the data for a given item in a
single record?
![Page 4: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/4.jpg)
应用场合 公司员工的电话号码簿和组织结构图 客户的联系信息 软件包的配置信息 安全领域:数字证书或者安全密匙
存放的数据信息 文本信息(如:人名,地址,电话等) 图片(比如照片) 指针(指向其他数据的 URL ) 其他一些二进制文件
![Page 5: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/5.jpg)
LDAP 服务器的特点 特点:
查询速度快 增删改的速度比较慢 支持分布式
![Page 6: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/6.jpg)
在分布式目录服务器中, LDAP 目录服务器可以由多个运行在相同或者不同地理位置上的 LDAP 服务器提供。 LDAP 客户机向 LDAP 服务器 1 请求信息 LDAP 服务器 1 给客户机返回 LDAP URL , LDAP 服务器
2 在这个 LDAP URL 上 客户机根据 LDAP URL 向 LDAP 服务器 2 发出请求 如果信息在 LDAP2 上,返回结果,如果不在,则返回 LDA
P URL ,依此类推。
用户LDAP服务器1 LDAP服务器2
2 return Referral
1 request 3 New request
4 response
![Page 7: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/7.jpg)
LDAP 服务端
IBM Tivoli Directory Server (商业试用) http://www-306.ibm.com/software/tivoli/resource-c
enter/security/code-directory-server.jsp Windows Server AD (Active Directory) Linux OpenLDAP (开源)
http://www.openLDAP.org 开源 ApacheDs (开源)
http://directory.apache.org/
![Page 8: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/8.jpg)
LDAP 开源客户端(支持 V3,V2 ) ApacheDirectoryStudio-win32-1.1.0
http://directory.apache.org/
JX v3.2_install_windows http://download.csdn.net/source/461292
![Page 9: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/9.jpg)
LDAP 基本协议模型 LDAP 的基本协议模型遵循 C/S 模型,由 LDAP Client 提交符合 LDAP
协议的目录服务请求,应用编程接口( API )通过 TCP/IP 协议将目录访问操作和参数传递给 LDAP 服务器, LDAP 服务器直接与目录连接,并将结果返回到客户端应用。
Request/Reply
API
Directory Client Lib
TCP/IP
LDAP Client
Receive MessageAccess Directory
Return Reply
Request/Reply
LDAP Directory
Request MessageReply Message
![Page 10: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/10.jpg)
LDAP 的信息模型 信息模型--定义在目录中能够存储的数据类型和基本的信
息单元。 目录中的基本信息单元是条目( entry ),即关于对象的信息
集合。 条目说明的是真实世界的队象(比如人,部门,服务器,打
印机)
type
value
valuevalue
Attribute Attribute
Attribute Attribute
Entry
![Page 11: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/11.jpg)
entry1
entry2
![Page 12: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/12.jpg)
属性和属性值
条目由属性集合组成,每个属性说明对象的一个特征。每个属性有一个类型和一个或多个值,含有多个值的属性(人会有多个电话号码、联系地址);
属性的值取决依赖于属性的类型; 属性有属性语法,用来决定该属性的类型 属性有匹配的原则,这些规则决定属性的
值该如何进行比较,例如相等规则,取子串规则。
![Page 13: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/13.jpg)
下图表示的是描述一个人的条目,具有一个人的全名 (cn):common name ,姓 (sn) surname ,电话号码 telephonenumber ,电子邮件地址等属性。
属性类型 属性的值
cn: 刘德华Sn: 刘telephonenumber 110
email [email protected]
![Page 14: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/14.jpg)
LDAP Attribute 组成部分 Attribute 名字
Attribute 的名字要避免与 “官方指定”的 Attribute 的名字冲突
Attribute 的名字的第一个字母必须小写,其他单词的第一个字母必须大写,其他的字母必须小写
Attribute 的名字由 a-z,0-9 以及其他少量的字母构成,名字的第一个字符必须是字母,空格、下划线及一些特殊字符是不允许出现在 Attribute 的名字中的
描述 是一个描述 Attribute 的用途的注释。
对象标识符( OID ) 被 LDAP内部数据库引用的数字
用于类型检查和模式匹配的语法 Attribute 是否允许有多个值
![Page 15: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/15.jpg)
常见的 Attribute : c -国家 ;
dc - domain Component,经常用来指一个域名的一部分,如: dc=bjsxt,dc=com;
o - organizationName, 指一个组织的名字 ; objectClass -指对象类;
ou - organizationalUnitName, 指一个组织单元的名字 ; sn - surname, 指一个人的姓 ; cn - common name, 指一个对象的名字 ; 如果指人 , 需要使用其全名 ;
givenName -指一个人的名字 , 不能用来指姓或者middle name;
userPassword -用户密码 ; uid - userid, 通常指一个人的登录名 ;
email -电子信箱地址 ;
![Page 16: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/16.jpg)
LDAP 的结构 LDAP 是按照树形目录进行组织的(与 unix , linux
相似)。 公司的域名是 bjsxt.com ,则 LDAP 使用域名作为整
个树的根,并且用 dc=bjsxt , dc=com 标记标注。 dc节点的后面,就是 ou节点。可以把 ou想象为文
件夹,它是用来容纳其他节点的。 ou 可以对应部门、组或者任何要包含其他节点的东西。
ou下面的节点,可以是另一个 ou ,也可以是 cn 或者 uid节点。 cn 是“ Common Name” 的缩写,它是树叶节点,可以把它对比为文件系统中的文件。 cn节点通常用来存储用户的信息,例如某个用户的地址,用户密码等。
![Page 17: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/17.jpg)
对象类( Object Class ) 定义:许多条目中具有相同的或者相似的属性,将
这些属性抽取出来,封装成一个单独的类 约束: Object Class 中的必须包含的属性称为强
制的( mandatory ),可能包含的属性称为可选的( optional )。
继承关系:对象类遵循继承机制 , 子类继承父类所有强制和可选属性。 Top 类形成队象类的根,其他的子类都直接或者间接的由它派生, top 类定义的强制属性“ objectclass” ,保证每个目录项至少有一个对象类。
Attribute Field Object Calss Table
![Page 18: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/18.jpg)
对象类的描述
对象类 强制属性 可选属性 说明Top Objectclass 祖先类Person Sn(surname)
Cn(commonname)
objectclass
Userpassword
telephoneNumber
seeAlso
Description
定义了一般个人信息类
OrganizationalPerson
Cn
Objectclass
registeredAddress
postOfficBox
postalCode
Ou
定义了组织内部的个人信息
inetOrgPerson Cn
Uid
Objectclass
Maildro;
Sex
Birthday
Date
edulevel
定义了 internet 上个人信息类
![Page 19: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/19.jpg)
LDAP 模式 Schema Schema 模式定义包含对象类型的定义和属性类型的定义。 对象类型定义: LDAP 目录树中的每一个条目对应着一个特殊的
对象类型,由对象类型来定义条目的结构。在 LDAP 中定义一些基本的数据类型,如 O , OU , person 等,还允许用户扩展新的对象类型信息。扩展对象就是定义新的对象类型继承原来的对象类型,为每个对象类型指定一个特定的标示 OID 。
属性定义:需要指定该属性类型的标识符 OID ,类型名,取值的数据类型,匹配的规则,排序的规则。
![Page 20: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/20.jpg)
LDAP 模式文件示例: attributetype(1.3.6.1.4.1.8000.1.2.3.1 Name ‘CustomerID’
SUP name//继承SINGLE-VALUE// 单值NO-USER-MODIFICATION)
attributetype(1.3.6.1.4.1.8000.1.2.3.2 Name ‘CustomerName’ SUP name…………..…………..Objectclass(1.3.6.1.4.1.8000.1.2.4.4.1 Name ‘Customer’
SUP top //超类STRUCTUALMUST(Customer$CutomerName) //必须属性MAY(RegisteredDates$Date)// 可选属性
)
![Page 21: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/21.jpg)
LDAP 目录服务器与数据库的区别
LDAP服务器 数据库
基本的元素
描述性的基于属性的记录集合 entry 数据库表
数据类型 字符类型:添加了 BIN (二进制数据)、 CIS (忽略大小写)、 CES (大小写敏感)、 TEL (电话型)等语法( Syntax )
整数、浮点数、日期、货币等 类型
函数 无 有事务回滚 无 有
写操作记录的锁定
All-or-Nothing 针对单条记录的锁定
读取速度 快 慢
![Page 22: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/22.jpg)
LDAP 命名模型 LDAP命名模型定义用户如何组织和引用数据。 LDAP 的所有目录节点构成目录信息树( DIT )。 命名服务为目录的每一个条目给出唯一的一个名称。
使用分辨名( DN )类唯一表识条目。下图的用户 john 可以标识为:uid=john,ou-engineering ou=people dc=bus dc=com,从左到右可以跟踪到目录树根的路径。
Dc=bus dc=com
Ou=server
Ou=salesOu=engineering
Ou=people
Uid=john
用户
部门 应用服务
![Page 23: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/23.jpg)
在任何条目 DN 中,最左边的一段称为相对分辨名( RDN ),在兄弟条目中,每个 RDN 是唯一的,下图中的,虽然两个条目 RDN都是 cn=张艺谋,但他们在不同的子树中,所以是合法的。
Dc=examle dc=com
Ou=sales
Cn=张艺谋
Ou=engineering
Cn=张艺谋
Cn=王石
![Page 24: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/24.jpg)
LDIF 文件
LDIF (LDAP Interchange Format) 数据信息交互格式,以文本的方式描述目录数据库中条目的相关信息。 “#” 号开头的为注释行; 非注释行中冒号左边为属性,右边是属性的值 changetype 的类型可以为 add (添加), delete (删除) 每个节点,都有一个唯一的名称对应,这个名称叫做 dn
( Distinguished Name )
![Page 25: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。](https://reader031.vdocuments.site/reader031/viewer/2022031613/56649d3e5503460f94a16c43/html5/thumbnails/25.jpg)
LDAP 结构示意图 dc=bjsxtdc=com
ou=Students
ou=Teachers
cn=liuchao
cn=zhangsan
cn=zhang
cn=li