本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA...

25
本本本本本本 LDAP 服服服服服 服服 dc=bjsxt,dc=com LDAP 服服服 服服 JAVA 服服服服 LDAP 服服服服服服 服服服服 roller 服服服 LDAP 服服服服服服服
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    363
  • download

    38

Transcript of 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA...

Page 1: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

Page 2: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

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 服务器进行认证。

选择 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 服务器进行认证。

应用场合 公司员工的电话号码簿和组织结构图 客户的联系信息 软件包的配置信息 安全领域:数字证书或者安全密匙

存放的数据信息 文本信息(如:人名,地址,电话等) 图片(比如照片) 指针(指向其他数据的 URL ) 其他一些二进制文件

Page 5: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

LDAP 服务器的特点 特点:

查询速度快 增删改的速度比较慢 支持分布式

Page 6: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

在分布式目录服务器中, 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 服务器进行认证。

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 服务器进行认证。

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 服务器进行认证。

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 服务器进行认证。

LDAP 的信息模型 信息模型--定义在目录中能够存储的数据类型和基本的信

息单元。 目录中的基本信息单元是条目( entry ),即关于对象的信息

集合。 条目说明的是真实世界的队象(比如人,部门,服务器,打

印机)

type

value

valuevalue

Attribute Attribute

Attribute Attribute

Entry

Page 11: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

entry1

entry2

Page 12: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

属性和属性值

条目由属性集合组成,每个属性说明对象的一个特征。每个属性有一个类型和一个或多个值,含有多个值的属性(人会有多个电话号码、联系地址);

属性的值取决依赖于属性的类型; 属性有属性语法,用来决定该属性的类型 属性有匹配的原则,这些规则决定属性的

值该如何进行比较,例如相等规则,取子串规则。

Page 13: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

下图表示的是描述一个人的条目,具有一个人的全名 (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 服务器进行认证。

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 服务器进行认证。

常见的 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 服务器进行认证。

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 服务器进行认证。

对象类( 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 服务器进行认证。

对象类的描述

对象类 强制属性 可选属性 说明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 服务器进行认证。

LDAP 模式 Schema Schema 模式定义包含对象类型的定义和属性类型的定义。 对象类型定义: LDAP 目录树中的每一个条目对应着一个特殊的

对象类型,由对象类型来定义条目的结构。在 LDAP 中定义一些基本的数据类型,如 O , OU , person 等,还允许用户扩展新的对象类型信息。扩展对象就是定义新的对象类型继承原来的对象类型,为每个对象类型指定一个特定的标示 OID 。

属性定义:需要指定该属性类型的标识符 OID ,类型名,取值的数据类型,匹配的规则,排序的规则。

Page 20: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

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 服务器进行认证。

LDAP 目录服务器与数据库的区别

 

LDAP服务器 数据库

基本的元素

描述性的基于属性的记录集合 entry 数据库表

数据类型 字符类型:添加了 BIN (二进制数据)、 CIS (忽略大小写)、 CES (大小写敏感)、 TEL (电话型)等语法( Syntax )

整数、浮点数、日期、货币等 类型

函数 无 有事务回滚 无 有

写操作记录的锁定

All-or-Nothing 针对单条记录的锁定

读取速度 快 慢

Page 22: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

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 服务器进行认证。

在任何条目 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 服务器进行认证。

LDIF 文件

LDIF (LDAP Interchange Format) 数据信息交互格式,以文本的方式描述目录数据库中条目的相关信息。 “#” 号开头的为注释行; 非注释行中冒号左边为属性,右边是属性的值 changetype 的类型可以为 add (添加), delete (删除) 每个节点,都有一个唯一的名称对应,这个名称叫做 dn

( Distinguished Name )

Page 25: 本节课的内容 LDAP 服务器介绍 建立 dc=bjsxt,dc=com LDAP 服务器 使用 JAVA 如何进行 LDAP 服务器的访问 如何配置 roller 来应用 LDAP 服务器进行认证。

LDAP 结构示意图 dc=bjsxtdc=com

ou=Students

ou=Teachers

cn=liuchao

cn=zhangsan

cn=zhang

cn=li