Ldap文档_RFC2252+Attribute+Syntax+Definitions

合集下载

LDAP协议

LDAP协议

LDAP协议协议名称:LDAP协议一、背景介绍LDAP(Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录服务的协议。

它基于TCP/IP协议栈,旨在提供一种标准的方式来访问和管理目录信息。

LDAP协议被广泛应用于企业和组织的身份验证、访问控制、地址簿等方面。

二、目的和范围本协议的目的是规范LDAP协议的使用和实现,确保LDAP服务器和客户端之间的互操作性和安全性。

本协议适用于所有使用LDAP协议进行通信的实体,包括但不限于LDAP服务器、LDAP客户端和中间件。

三、术语定义1. LDAP服务器:提供LDAP服务的服务器端应用程序。

2. LDAP客户端:使用LDAP协议与LDAP服务器进行通信的客户端应用程序。

3. 目录服务:存储和管理组织结构、用户信息、资源信息等的系统。

4. 目录项(Entry):目录中的一个单元,包含一组属性和其对应的值。

5. 属性(Attribute):目录项中的一个特定信息字段。

6. 值(Value):属性对应的具体信息。

四、协议规范1. 连接建立1.1 客户端与服务器之间的连接应使用TCP/IP协议。

1.2 连接建立前,客户端和服务器应进行必要的身份验证和安全性检查。

1.3 连接建立后,客户端和服务器之间应遵循LDAP协议的消息交互规则。

2. 消息交互2.1 消息格式2.1.1 LDAP消息由消息头和消息体组成。

2.1.2 消息头包含消息ID、消息类型和消息控制字段等。

2.1.3 消息体根据消息类型的不同而有所差异,包括请求消息和响应消息。

2.2 请求消息2.2.1 请求消息用于向服务器发送操作请求,包括但不限于查询、添加、修改和删除等。

2.2.2 请求消息应包含必要的身份验证和安全性信息。

2.3 响应消息2.3.1 响应消息用于向客户端返回操作结果,包括成功、失败和错误信息等。

2.3.2 响应消息应包含必要的错误码和错误描述信息。

Oracle LDAP设置指南

Oracle LDAP设置指南

Oracle LDAP 设置指南一.概述本指南用于说明如何使用LDAP 服务器保存邮件系统用户信息。

邮件服务器用户验证结构如下:验证服务器用于跨数据库,LDAP服务器的验证中心。

邮件服务器把验证请求发送到验证服务器,验证服务器再根据具体的后台用户信息保存类型进行相应的用户信息读取,验证。

二.LDAP 服务器设置本指南以OpenLDAP 做为例子LDAP 服务器。

配置步骤如下:1)把以下schema 文件(turbomail.schema)加入openldap/etc/schema.attributetype ( 5.1.1.1 NAME 'domain'DESC 'domain name'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.2 NAME 'enable'DESC 'enable'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.3 NAME 'enablesmtp'DESC 'enable_smtp'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.4 NAME 'enableimap4'DESC 'enable_imap4'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.5 NAME 'enablepop3' DESC 'enable_pop3'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.6 NAME 'enablewebaccess' DESC 'enable_webaccess'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.7 NAME 'enablelocaldomain' DESC 'enable_webaccess'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.8 NAME 'enablesms'DESC 'enable_sms'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.9 NAME 'maxmailboxsize' DESC 'max_mailbox_size'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.10 NAME 'maxmailboxmsgs' DESC 'max_mailbox_msgs'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.11 NAME 'usertype'DESC 'usertype'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.12 NAME 'tpassword'DESC 'tpassword'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.13 NAME 'modifytime' DESC 'modifytime'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.14 NAME 'firstname'DESC 'firstname'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.15 NAME 'organization' DESC 'organiztion'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.16 NAME 'department' DESC 'department'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.17 NAME 'address'DESC 'address'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.18 NAME 'city'DESC 'city'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.19 NAME 'tpostalcode' DESC 'tpostalcode'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.20 NAME 'telephone'DESC 'telephone'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.21 NAME 'stateprovince' DESC 'stateprovince'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.22 NAME 'country'DESC 'country'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.23 NAME 'items'DESC 'items'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.24 NAME 'mobile'DESC 'mobile'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.25 NAME 'realname'DESC 'realname'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.26 NAME 'receivecond' DESC 'receivecond'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.27 NAME 'remaincopy' DESC 'remaincopy'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.28 NAME 'replacercpt'DESC 'replacercpt'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.29 NAME 'users'DESC 'users'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2046} )attributetype ( 5.1.1.30 NAME 'helodomain'DESC 'helodomain'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.31 NAME 'bdefault'DESC 'bdefault'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{6} )attributetype ( 5.1.1.32 NAME 'enablereg'DESC 'enablereg'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{6} )attributetype ( 5.1.1.33 NAME 'domainusers' DESC 'domainusers'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.34 NAME 'license'DESC 'license'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.35 NAME 'totalmailboxsize' DESC 'totalmailboxsize'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.36 NAME 'notetime'DESC 'notetime'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.37 NAME 'state'DESC 'state'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.38 NAME 'notesetdisable' DESC 'notesetdisable'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.39 NAME 'lastname'DESC 'lastname'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.40 NAME 'noteaddress' DESC 'noteaddress'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.41 NAME 'username'DESC 'username'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )attributetype ( 5.1.1.42 NAME 'smsenablesms' DESC 'enable_sms'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.43 NAME 'needapprove' DESC 'needapprove'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5} )attributetype ( 5.1.1.44 NAME 'jointype'DESC 'jointype'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.45 NAME 'visibletype' DESC 'visibletype'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.46 NAME 'subscribe'DESC 'subscribe'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )attributetype ( 5.1.1.47 NAME 'unsubscribe' DESC 'unsubscribe'EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )objectclass ( 5.1.1.99 NAME 'mailuser'DESC 'mailuser'SUP top STRUCTURALMUST ( username )MAY ( domain $ enable $ enablesmtp $ enableimap4 $enablepop3 $ enablewebaccess $ enablelocaldomain $ enablesms $maxmailboxsize $ maxmailboxmsgs $ usertype $ tpassword $modifytime $ firstname $ lastname $ organization $ department $ address $city $ tpostalcode $ telephone $ stateprovince $ country $ items $ mobile $realname $ receivecond $ remaincopy $ replacercpt $ users $ needapprove $ jointype $ visibletype $ subscribe $ unsubscribe) )objectclass ( 5.1.1.98 NAME 'maildomain'DESC 'maildomain'SUP top STRUCTURALMUST ( domain )MAY( helodomain $ bdefault $ enablereg $ domainusers $ license $ enable $ enablesmtp $ enableimap4 $enablepop3 $ enablewebaccess $ enablelocaldomain $ enablesms $maxmailboxsize $ maxmailboxmsgs $ totalmailboxsize $ notetime $noteaddress $ state $ notesetdisable $ modifytime $ smsenable) )2)配置ldapd.conf,加入以下指定turbomail.schema 的配置。

ldap 筛选语法

ldap 筛选语法

ldap 筛选语法
LDAP(Lightweight Directory Access Protocol)是一种用于
访问和维护分布式目录信息的协议。

在LDAP中,筛选语法用于指定
搜索目录信息时的条件和规则。

筛选语法是LDAP查询中非常重要的
一部分,它允许用户根据特定的条件来搜索目录中的信息。

LDAP筛选语法使用一种类似于布尔逻辑的语法来构建查询条件。

它包括一些常见的运算符,比如等于(=)、大于(>)、小于(<)等,以及逻辑运算符(与、或、非)来组合条件。

通过使用这些运
算符和逻辑运算符,用户可以构建复杂的查询条件,以便准确地定
位目录中的信息。

LDAP筛选语法的基本语法结构如下:
(attribute=condition)。

其中,attribute是要搜索的属性名,condition是属性值的条件。

例如,(cn=John)表示要搜索属性cn的值等于John的目录信息。

除了基本的等于条件,LDAP筛选语法还支持通配符()和括号
来构建更加灵活的查询条件。

用户可以使用通配符来匹配任意字符,也可以使用括号来组合多个条件,以实现更复杂的查询需求。

总的来说,LDAP筛选语法为用户提供了一种灵活、强大的工具,可以根据特定的条件来搜索和定位目录中的信息。

通过合理地运用
筛选语法,用户可以高效地获取他们所需的目录信息,从而更好地
利用LDAP协议的功能。

LDAP筛选语法的灵活性和强大性使得它成
为LDAP协议中不可或缺的一部分,为用户提供了便利和效率。

LDAP定义schema详解

LDAP定义schema详解

LDAP定义schema详解来源:schema类似关系数据库的字段说明,包括字段名,数据类型,数据长度等等。

系统有一些默认的schema,我的默认schema文件在/usr/local/openldap/etc/openldap/schema下面,最重要的是core.schema。

它定义了一些最基本的字段。

1、为了适应我们的应用,我们要创建自己的schema文件。

shema文件内容如下(文件名:kunmail.schema):## kunmail-ldap v3 directory schema## written by hefish@## Attribute Type Definitionsattributetype ( .1.4.1.7914.1.2.1.1 NAME 'username'DESC 'name of the user on the mailsystem'EQUALITY caseIgnoreIA5MatchSYNTAX .1.4.1.1466.115.121.1.26SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.2 NAME 'vuid'DESC 'UID of the user on the mailsystem'EQUALITY integerMatchSYNTAX .1.4.1.1466.115.121.1.27SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.3 NAME 'vgid'DESC 'GID of the user on the mailsystem'EQUALITY integerMatchSYNTAX .1.4.1.1466.115.121.1.27SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.4 NAME 'maildir'DESC 'Path to the maildir/mbox on the mail system'EQUALITY caseExactMatchSYNTAX .1.4.1.1466.115.121.1.15SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.5 NAME 'forwardAddr'SUBSTR caseIgnoreSubstringsMatchDESC 'Forward mail address'EQUALITY caseIgnoreIA5MatchSYNTAX .1.4.1.1466.115.121.1.26 )attributetype ( .1.4.1.7914.1.2.1.6 NAME 'quota'DESC 'The amount of space the user can use until all further messages get bounced.' SYNTAX .1.4.1.1466.115.121.1.44SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.7 NAME 'storeHost'DESC 'On which kunmail server the messagestore of this user is located.' EQUALITY caseIgnoreIA5MatchSYNTAX .1.4.1.1466.115.121.1.26SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.8 NAME 'delivery'DESC 'Program to execute for all incoming mails.'SYNTAX .1.4.1.1466.115.121.1.15SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.9 NAME 'clearpw'DESC 'name of the user on the mailsystem'EQUALITY caseIgnoreIA5MatchSYNTAX .1.4.1.1466.115.121.1.26SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.10 NAME 'home'DESC 'Program to execute for all incoming mails.'SYNTAX .1.4.1.1466.115.121.1.15SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.11 NAME 'mailReplyText'DESC 'A reply text for every incoming message'SUBSTR caseIgnoreSubstringsMatchSYNTAX .1.4.1.1466.115.121.1.44{4096}SINGLE-value )attributetype ( .1.4.1.7914.1.2.1.12 NAME 'active'DESC 'The status of a user account: active, nopop, disabled'EQUALITY integerMatchSYNTAX .1.4.1.1466.115.121.1.27SINGLE-value )# Object Class Definitionsobjectclass ( .1.4.1.7914.1.2.2.1 NAM E 'kunmailUser'DESC 'KunMail-LDAP User' SUP top STRUCTURALMUST ( username $ cn $ vuid $ vgid )MAY ( maildir $ home $ clearpw $forwardAddr $ quota $storeHost $ delivery $mailReplyText $ active ) )2、现在来说说这个schema文件:开始部分是attributeType的定义,相当于字段定义。

ldap ldif 用法

ldap ldif 用法

LDAP(轻量级目录访问协议)是一种用于访问和维护分布式目录服务的开放式标准协议。

LDIF(轻量级目录交换格式)是LDAP 的一种数据交换格式,用于在LDAP 客户端和服务器之间传输目录数据。

LDIF 文件的格式如下:```version: 1data: {entry: {dn: "<distinguished-name>",changetype: "modify",<attribute-name>: "<attribute-value>"}}```其中:- `version`:表示LDIF 文件的版本,目前为1。

- `data`:包含一个或多个条目(entry),每个条目包含Distinguished Name (Distinguished Name,即DN)、更改类型(changetype)和一条或多条属性(attribute)。

下面是一个简单的LDIF 文件示例:```version: 1data: {entry: {dn: "cn=testuser,ou=people,ou=myorg",changetype: "add",attribute: {cn: "testuser",sn: "Test User",email:"********************"}}}```要在LDAP 服务器上导入LDIF 文件,可以使用以下命令:```ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f <ldif_file>```其中:- `-D`:指定管理员密码。

- `-W`:表示为导入的LDIF 文件加密。

- `<ldif_file>`:LDIF 文件的路径。

ldap 配置

ldap 配置

第14章目录服务器目录一般用来包含描述性的、基于属性的信息,例如,通讯簿就可使用目录的形式来保存。

目录服务是一种特殊的数据库系统,专门针对数据的读取、浏览和搜索操作进行了特定的优化。

目录服务器则是提供目录服务的程序,通常使用LDAP协议提供目录服务。

LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是实现提供目录服务的网络协议。

本章将介绍通过OpenLDAP架设目录服务器的操作过程,主要包括以下知识点:了解LDAP协议。

掌握安装OpenLDAP的方法。

掌握配置OpenLDAP的过程。

掌握向OpenLDAP中添加条目、修改条目、查询条目的方法。

掌握设置主从OpenLDAP服务器的方法。

了解OpenLDAP在用户认证中的应用。

14.1 了解LDAP协议在进行安装配置OpenLDAP之前,本节首先对LDAP协议进行简单的介绍,让读者对LDAP 的结构有一个认识。

14.1.1 LDAP协议目录是一组具有类似属性、以一定逻辑和层次组合的信息。

常见的例子是通讯簿,由以字母顺序排列的名字、地址和电话号码组成。

目录服务是一种在分布式环境中发现目标的方法。

目录具有两个主要组成部分:第一部分是数据库,数据库是分布式的,且拥有一个描述数据的规划。

第二部分则是访问和处理数据的各种协议。

目录服务其实也是一种数据库系统,只是这种数据库是一种树形结构,而不是通常使用的关系数据库。

目录服务与关系数据库之间的主要区别在于:二者都允许对存储数据进行访问,只是目录主要用于读取,其查询的效率很高,而关系数据库则是为读写而设计的。

提示:目录服务不适于进行频繁的更新,属于典型的分布式结构。

LDAP是一个目录服务协议,目前存在众多版本的LDAP,而最常见的则是V2和V3两个版本,它们分别于1995年和1997年首次发布。

14.1.2 LDAP的基本模型LDAP的基本模型是建立在"条目"(Entry)的基础上。

LDAP学习资料整理

LDAP学习资料整理LDAP中的objectClass与Attribute初学LDAP时容易弄错的问题就是objectClass和Attribute之间的关系的,当时找过许多的中文资料都没有得到答案。

最近终于彻底弄明白了这个问题,于是决定做个笔记。

下面我会对照Java里面的一些概念来讲讲LDAP中的objectClass与Attribute,非常惊喜的是他们非常相似!LDAP中每一个Entry必须属于某一个objectClass,用Java的方式来理解就是Entry是一个Instance,而objectClass就是class。

在Java中Class可以分为Abstract,concrete两种,我们知道要new 一个Instance时必须要有一个concrete Class。

在LDAP中objectClass分为三种:Abstract,Structural,AUXIALIARY。

要定义一个Entry必须包含一个Structural类型的ObjectClass,其他两个类型可包括0或多个。

其中T op是一个顶级ObjectClass,里面定义了一个MUST Attribute:ObjectClass,于是也就决定了必须有一个其它的Structural ObjectClass才能定义一个Entry.其中ObjectClass 又可以存在继承关系,该继承关系于Java中有点相似,子ObjectClass会继承父ObjectClass中的全部Attribute.下面分析一下ObjectClass与Attribute的关系。

如同Java里面的一个类可以包括多个Field,在业务上可能会定义某些Field是必须的,另外一些是可选的。

在LDAP中也存在类似关系,每一个ObjectClass都定义了一些Attribute,其Attribute仍然可以是ObjectClass。

在这些Attriubte中分为两种类型MUST,MAY,MUST表示这个Entry必须包括的属性,MAY为可选。

Spring ldap 中文文档

Spring ldap 中文文档(一)第一章介绍1.1 概览Spring-LDAP是一个java简单应用在LDAP开发的一个库,是采取类似Spring JDBC中的JdbcTemplate的原理建立的。

它使得我们完全没必要考虑LdapContext的生成和关闭以及NamingEnumeration的循环。

在Spring's DataAccessException基础上建立的Spring-LDAP提供一个更加全面且不用检查的异常处理机制。

作为补充,Spring-LDAP也有了动态建立LDAP filters和DNs(Distinguished Names)的类。

举个例子来说,如实现一个获取所有人员进入并返回存有他们名字的list的方法。

用JDBC,我们得先生成一个connection,用statement执行一个query。

然后我们要遍历resultset,找到我们需要的那个column,把它放入到list。

类似地,用Java LDAP,我们先生成一个context,用search filter执行一个search。

然后循环遍历resulting namingenumeration,找到需要的那个attribute,把它加入到list。

按传统的实现方法,用Java LDAP实现查找人员名称看起来应该是这样的:package com.example.dao;public class TraditionalPersonDaoImpl implements PersonDao {public List getAllPersonNames() {Hashtable env = new Hashtable();env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, “ldap://localhost:389/dc=example,dc=com”); DirContext ctx;try {ctx = new InitialDirContext(env);} catch (NamingException e) {throw new RuntimeException(e);}LinkedList list = new LinkedList();NamingEnumeration results = null;try {SearchControls controls = new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);results = ctx.search("", "(objectclass=person)", controls);while (results.hasMore()) {SearchResult searchResult = (SearchResult) results.next();Attributes attributes = searchResult.getAttributes();Attribute attr = attributes.get("cn");String cn = (String) attr.get();list.add(cn);}} catch (NameNotFoundException e) {// The base context was not found.// Just clean up and exit.} catch (NamingException e) {throw new RuntimeException(e);} finally {if (results != null) {try {results.close();} catch (Exception e) {// Never mind this.}}if (ctx != null) {try {ctx.close();} catch (Exception e) {// Never mind this.}}}return list;}}通过spring的LDAP AttributesMapper,我们可以通过下面的代码实现完全一样的功能:package com.example.dao;public class PersonDaoImpl implements PersonDao {private LdapTemplate ldapTemplate;public void setLdapTemplate(LdapTemplate ldapTemplate) {this.ldapTemplate = ldapTemplate;}public List getAllPersonNames() {return ldapTemplate.search("", "(objectclass=person)",new AttributesMapper() {public Object mapFromAttributes(Attributes attrs)throws NamingException {return attrs.get("cn").get();}});}}1.2 包用Spring LDAP最小需要:spring-ldap(spring-ldap包)spring-core(用于框架内部的丰富的工具类)spring-beans(方便操作java beans的接口和类)spring-context(增加通过一致API为应用对象获取资源的能力)spring-dao(使经常性的错误处理跟使用中的数据访问分开的异常处理机制)commons-logging(简单的日志处理,内部使用)在您的Spring context文件中设置需要的beans,然后把LdapTemplate注入到您的数据访问对象:<beans>...<bean id="contextSource" class="org.springframework.ldap.support.LdapContextSource"> <property name="url" value="ldap://localhost:389" /><property name="base" value="dc=example,dc=com" /><property name="userName" value="cn=Manager" /><property name="password" value="secret" /></bean><bean id="ldapTemplate" class="org.springframework.ldap.LdapTemplate"><constructor-arg ref="contextSource" /></bean></beans>1.3 包架构这部分包提供了Spring LDAP源代码的逻辑包架构的视图。

ldap常用字段

ldap常用字段LDAP(轻量级目录访问协议)是一种用于查询、浏览和搜索目录数据库的协议。

在LDAP中,有一些常用的字段,如下:1. 对象类(Object Class):用于定义目录条目的类型,例如:person、group、organization等。

2. 属性(Attribute):用于描述对象类的属性,如姓名、性别、年龄、电话号码等。

3. 属性值(Attribute Value):对应于每个属性的具体值,例如:张三、男、25、138****5678等。

4. Distinguished Name(DN):用于唯一标识一个目录条目的字符串,包括条目的命名空间和相对Distinguished Name。

5. 相对Distinguished Name(RDN):是Distinguished Name 中的相对部分,用于区分同一对象类中的不同条目。

6. 用户名(Username):用于标识LDAP客户端与服务器之间的用户身份验证。

7. 密码(Password):用于进行用户身份验证时提供加密后的密码。

8. 邮箱(Email):用于存储用户的电子邮件地址。

9. 电话号码(Phone Number):用于存储用户的联系电话。

10. 组织单位(Organization Unit):用于表示目录树中的一个分支,用于组织和管理相关条目。

11. 位置(Location):用于存储用户的物理地址。

12. 用户类型(User Type):用于表示用户在组织内的角色,如普通用户、管理员等。

13. 创建时间(Create Time):用于记录目录条目的创建时间。

14. 修改时间(Modify Time):用于记录目录条目最后一次修改的时间。

这些字段在LDAP目录服务中具有重要作用,有助于组织和存储用户、设备和其它相关数据。

在实际应用中,可以根据实际需求添加或修改字段。

LDAP协议

LDAP协议协议名称:LDAP协议一、协议目的LDAP(轻量级目录访问协议)是一种用于访问和维护分布式目录服务的应用层协议。

本协议的目的是明确规定LDAP协议的标准格式,以确保各方能够准确理解和实施LDAP协议。

二、协议范围本协议适合于所有使用LDAP协议进行目录服务的实体,包括但不限于LDAP 服务器、LDAP客户端以及与LDAP协议相关的中间件和应用程序。

三、协议内容1. LDAP协议版本1.1 LDAP协议的版本应符合RFC 4510规定。

1.2 目前广泛使用的LDAP协议版本包括LDAPv2和LDAPv3,推荐使用LDAPv3。

2. LDAP协议格式2.1 LDAP请求格式LDAP请求由操作码(Operation Code)和操作数(Operation Operand)组成。

操作码用于指示请求的类型,操作数用于携带请求的参数。

LDAP请求格式如下:<LDAP请求消息> ::= <LDAP消息头> <LDAP操作码> <LDAP操作数><LDAP消息头> ::= <消息ID><LDAP操作码> ::= <操作码类型><LDAP操作数> ::= <操作数类型>2.2 LDAP响应格式LDAP响应由结果码(Result Code)和结果描述(Result Description)组成。

结果码用于指示操作的结果状态,结果描述用于提供详细的操作结果信息。

LDAP响应格式如下:<LDAP响应消息> ::= <LDAP消息头> <LDAP结果码> <LDAP结果描述><LDAP消息头> ::= <消息ID><LDAP结果码> ::= <结果码类型><LDAP结果描述> ::= <结果描述类型>3. LDAP操作类型3.1 LDAP绑定操作LDAP绑定操作用于建立LDAP会话连接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

版权信息:本文档版权由所有,可随意传播、打印及用于任何用途,必须保留本文档的所有版权信息及版本信息,同时不可对本文档的任何部分进行任何修改。

版本信息日期版本描述作者2004-02-16 v1.0 最初版本 保留随时对本文档的任何部分作出修改,而不事先通知使用者的权利。

Attribute Syntax Definitions属性语法定义1、本备忘录的状态(Status of this Memo)本文档定义了一个用于Internet通讯的Internet标准跟踪协议,为了发展的需要讨论和建议。

对于这个协议的状况和地位请参照Internet官方协议标准("Internet Official Protocol Standards"(STD 1))的当前版。

这个备忘录的传播是不受限制的。

版权提示(Copyright Notice)版权Internet组织(The Internet Society (1997))。

所有权利保留。

IESG提示(IESG Note)本文档描述将一种同时提供读和更新访问的目录访问协议。

更新访问需要安全认证,但这个文档并不强制实现任何安全认证机制。

与RFC2026的4.4.1节相同,本规范正在被IESG批准期间,作为被提议的标准,可能并不限于本文档所述内容。

原因如下:a、鼓励在它们被发布前,实现和交互测试这些协议(带有或没有更新访问);b、鼓励在只读的应用程序中配置和使用这些协议。

(例如,在某些应用程序中,目录的更新访问使用某些其它安全的机制而不是LDAP,而使用LDAPv3被作为对目录的查询语言);c、避免阻碍别的Internet标准追踪协议的发展和发布。

(这些协议需要LDAPv3的目录服务器的查询能力,而不是更新能力)需要警告读者的是,直到强制的验证机制被标准化之前,根据本规范编写的客户端和服务器实现了更新功能的话,它们的互操作性可能是不可靠的,或者仅提供在认证需要极度弱化的时候的互操作性。

因此在具有强制认证的LDAPv3未成为一个RFC而被批准或发布之前,不鼓励实现者发布一个实现了更新功能的LDAPv3的客户端和服务器。

目录Attribute Syntax Definitions属性语法定义 (2)1、本备忘录的状态(Status of this Memo) (2)版权提示(Copyright Notice) (2)IESG提示(IESG Note) (2)2、摘要(Abstract) (6)3、综述(Overview) (6)4、总体问题(General Issues) (6)4.1、公共编码方面(Common Encoding Aspects) (7)4.2、属性类型(Attribute Types) (8)4.3、语法(Syntaxes) (10)4.3.1、值的二进制传换(Binary Transfer of Values) (10)4.3.2、语法对象标识符(Syntax Object Identifiers) (11)4.3.3、语法描述(Syntax Description) (13)4.4、对象类(Object Classes) (13)4.5、匹配规则(Matching Rules) (14)5、属性类型(Attribute Types) (15)5.1、标准操作性属性(Standard Operational Attributes) (15)5.1.1、createTimestamp (15)5.1.2、modifyTimestamp (15)5.1.3、creatorsName (16)5.1.4、modifiersName (16)5.1.5、subschemaSubentry (16)5.1.6、attributeTypes (16)5.1.7、objectClasses (17)5.1.8、matchingRules (17)5.1.9、matchingRuleUse (17)5.2、LDAP操作性属性(LDAP Operational Attributes) (17)5.2.1、namingContexts (17)5.2.2、altServer (18)5.2.3、supportedExtension (18)5.2.4、supportedControl (18)5.2.5、supportedSASLMechanisms (18)5.2.6、supportedLDAPVersion (18)5.3、LDAP子模式属性(LDAP Subschema Attribute) (19)5.3.1、ldapSyntaxes (19)5.4、X.500子模式属性(X.500 Subschema attributes) (19)5.4.1、dITStructureRules (19)5.4.2、nameForms (19)5.4.3、ditContentRules (19)6、语法(Syntaxes) (20)6.1、属性类型描述(Attribute Type Description) (20)6.2、二进行(Binary) (20)6.3、二进制字符串(Bit String) (20)6.4、布尔(Boolean) (20)6.5、证书(Certificate) (21)6.6、证书列表(Certificate List) (21)6.7、证书对(Certificate Pair) (21)6.8、国家字符串(Country String) (21)6.9、分辨名(DN) (22)6.10、目录字符串(Directory String) (22)6.11、DIT Content Rule Description (22)6.12、Facsimile Telephone Number (23)6.13、Fax (23)6.14、Generalized Time (23)6.15、IA5 String (24)6.16、INTEGER (24)6.17、JPEG (24)6.18、匹配规则描述(Matching Rule Description) (24)6.19、匹配规则使用描述(Matching Rule Use Description) (24)6.20、MHS OR Address (24)6.21、Name And Optional UID (25)6.22、Name Form Description (25)6.23、Numeric String (25)6.24、对象类描述(Object Class Description) (25)6.25、OID (26)6.26、Other Mailbox (26)6.27、Postal Address (26)6.28、Presentation Address (27)6.29、可打印字符串(Printable String) (27)6.30、Telephone Number (27)6.31、UTC Time (27)6.32、LDAP Syntax Description (27)6.33、DIT Structure Rule Description (28)7、对象类(Object Classes) (28)7.1、扩展对象类(Extensible Object Class) (28)7.2、子模式(subschema) (28)8、匹配规则(Matching Rules) (29)8.1、Matching Rules used in Equality Filters (29)8.2、Matching Rules used in Inequality Filters (30)8.3、Syntax and Matching Rules used in Substring Filters (31)8.4、Matching Rules for Subschema Attributes (31)9、安全考虑(Security Considerations) (32)9.1、泄密(Disclosure) (32)9.2、在安全应用程序中属性值的使用(Use of Attribute Values in SecurityApplications) (32)10、感谢(Acknowledgements) (32)11、作者地址(Authors' Addresses) (33)12、参考书目(Bibliography) (33)13、完整的版权声明(Full Copyright Statement) (34)2、摘要(Abstract)LDAP协议(参考文档[1])需要协议元素中AttributeValue域的内容为八进制的字符串。

本文档定义了LDAPv3的一套语法,以及这些语法的属性值在LDAP协议的传输中的表示规则。

在本文档中定义的语法被定义的属性类型的文档(包括本文档和其它文档)所遵从。

本文档也定义了LDAP服务器应当支持的一套属性类型。

3、综述(Overview)本文档为使用LDAP进行访问的目录定义了开发模式(schema)的框架。

模式(schema)是由下列内容组成的集合:1、属性类型定义;2、对象类(object class)定义;3、其它信息,服务器可以使用它来决定一个条目的属性如何匹配一个过滤和属性值判定(attribute value assertion)(在比较操作中),以及决定是否允许增加和修改操作。

第4节为属性类型、对象类、语法和匹配规则定义描述了总体需求和符号标记(notation)。

第5节是属性列表,第六节是语法列表,第七节是对象类列表。

其它文档定义了用目录条目表示现实世界对象的模式(schema)。

4、总体问题(General Issues)本文档描述用于Internet协议的编码。

本文档中的关键字"MUST","MUST NOT","REQUIRED","SHALL","SHALL NOT","SHOULD","SHOULD NOT","RECOMMENDED"和"MAY"的含意与RFC 2119(参考文档[4])中描述的相同。

属性类型和对象类定义书写为AttributeTypeDescription和ObjectClassDescription数据类型的字符串表达方式,AttributeTypeDescription和ObjectClassDescription在X.501(93)(参考文档[3])中定义。

相关文档
最新文档