sun directory server

Sun One Directory Server(LDAP)安装和调整指南

 

一、  LDAP概述

  1. 从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合“一次记录多次读取”。
  2. 从数据结构上阐述LDAP,它是一个树型结构,能有效明确的描述一个组织结构特性的相关信息。在这个树型结构上的每个节点,我们称之为“条目(Entry)”,每个条目有自己的唯一可区别的名称(Distinguished Name ,DN)。条目的DN是由条目所在树型结构中的父节点位置(Base DN)和该条目的某个可用来区别身份的属性(称之为RDN如uid , cn)组合而成。
  3. 从协议衍化上阐述LDAP,它是“目录访问协议DAP——ISO X.500”的衍生,简化了DAP协议,提供了轻量级的基于TCP/IP协议的网络访问,降低了管理维护成本,但保持了强壮且易于扩充的信息框架。LDAP的应用程序可以很轻松的新增、修改、查询和删除目录内容信息。

二、  安装 Sun ONE Directory Server

1、 开始之前

1.1 操作系统和软件版本

Windows Server 2003 sp2,32位

Sun One Directory Server 5.2

1.2 确保主机系统至少满足最低限度的磁盘空间和内存要求

如下表:

要求…

可用本地磁盘空间

可用RAM

软件解压空间

至少125M

产品安装

至少200M

至少256M

10000—250000个条目

添加至少3G

添加至少256M

250000—1000000个条目

添加至少5G

添加至少513M

超过1000000个条目

添加8G或更多

添加1G或更多

 

1.3 确保主机系统使用静态的IP地址。

1.4 确保已安装JRE1.5以上版本

1.5 准备安装信息:

说明

信息

管理域

domain.com

Administration server 管理端口

12345

目录管理员ID

admin

目录管理员口令

admin-pwd

目录管理员DN(目录的超级管理员)

cn=Directory Manager

目录管理员口令(至少8个字符)

manager-pwd

Directory Server 端口号(1 至 65535,包括 1 和65535)

389 (默认 LDAP)

636 (默认 LDAP/SSL)

完全限定的主机标识名称

ldapserver.domain.com

服务器 ID (不允许使用句点或空格)

ldapserver

服务器后缀(至少一个用于容纳目录内容)

dc=xxxxxxx,dc=xxxx

软件安装目录

C:\Program Files\Sun\MPS

 

1.6 修改主机hosts文件

修改文件C:\Windows\System32\dirvers\etc\hosts,用记事本打开,将其中

127.0.0.1     localhost                             修改为 

127.0.0.1     ladapserver.domin.com

2、 在Windows上安装LDAP

2.1 运行setup.exe文件,执行交互式视图安装:

sun directory server

 

2.2 填写Fully Qualified Computer Name

此名称为在hosts文件中修改的名称

sun directory server

2.3 选择安装Server或Console

sun directory server

2.4 选择安装方式

选择自定义方式

 

sun directory server

2.5 选择安装路径

sun directory server

2.6 选择安装内容

sun directory server

2.7 配置目录服务器

如果已经存在Directory Server,可选择第二项,如果没有则选择全新安装。

sun directory server

sun directory server

填写服务标识、服务端口、后缀:

sun directory server 

填写目录管理员密码,管理域

sun directory server

填写目录超级管理员密码,不小于8个字符

sun directory server 

配置管理员服务端口

sun directory server

点击Install Now 开始安装。安装完毕后,会显示安装结果;如果有错误显示请重新安装。

sun directory server

3、 登录测试安装是否成功

sun directory server

三、  配置LDAP

使用安装时创建的目录服务器(ldapserver);当然,你也可以重新建立新的目录服务器:登录Sun Java System Server Consoleà右键点击Server Groupà选择create instanceàDirectory Server,在其中填入相应信息即可。

sun directory server

 

1、        添加后缀和配置双主机

1.1 添加后缀

后缀包含目录服务器中的数据条目,后缀可用于复制操作。对于大多数部署而言,一个后缀对应一个数据库。对于某些部署而言,一个后缀可能对应着多个数据库。后缀名以 LDAP 格式显示,例如 dc=example,dc=com。

sun directory server

双击Directory Server(ldapserver)服务器实例,打开ldapserver.domain.com

点击Configuration选项卡

sun directory server

右键点击Dataà选择 new suffix,在弹出的对话框中添加新的后缀,单击OK

sun directory server 

新添加的后缀将显示在Data树下,需要说明的是,添加后缀必须以cn=Directory Manager目录管理员的身份登录,否则没有权限。查看当前登录者可在窗口的左下方点击图标:

sun directory serversun directory server

1.2 配置双主(通过复制协议)

         LDAP的主机的交互是通过两台服务器间的复制协议来完成的,协议的配置可在后缀中完成。

         点击dc=test,dc=com前的加号,选择Replication。

sun directory server

         点击Enable replication按钮,在弹出对话框中选择Muster Replica

sun directory server 

选择Muster Replica意味着此后缀下的数据可被通过复制协议所连接的客户端所更改,如果客户端(也可能是服务器)上的数据被更改,此服务器的数据也将更新。

点击Next,在Assign an ID to this master replica中注册一个复制ID,范围1-65535,此ID在所连接的多个主备服务器中应当是唯一的。

sun directory server

点击NEXT,选择复制日志存储位置,点击Next,填入复制管理员的密码,点击Next,将会看到配置信息,点击Close,开始配置复制服务器。

点击New按钮,在弹出的对话框中填写配置信息:

在Send updates to中,点击Other按钮填写服务器地址和服务端口号,在Password中填写另一台主机的复制管理员的密码,然后点击OK,将会提示是否测试连接,如果成功将显示成功信息。

(如果想指定别的用户作为复制管理员,可点击Advanced按钮,进行DN的添加绑定。复制管理员密码修改可通过他对应的DN找到其配置进行更改)。

sun directory server

sun directory server sun directory server

点击OK返回,刚添加的复制服务器将显示在复制服务器列表中。选中刚添加的复制服务器,点击右下方出现的Action按钮,选择”初始化远程复制服务”,初始化复制服务器,数据将从主服务器发送到复制服务器,点击列表旁边的Refresh按钮,选择刷新方式,服务器列表下面将显示相应信息:

sun directory server 

主机配置完后将复制主机作为主机按照以上步骤再配置一遍,完成双主配置。

2、        添加条目

2.1 条目概述

当在Configuration页添加了新的后缀后,就可以在Directory页下建立相应的条目了。条目必须使用后缀,也就是说,条目都是存储在后缀之下的。

在LDAP目录数据库中,所有的条目都必须定义objectClass这个属性。这有点像Java语言里说阐述的一切皆对象的理念,每个条目(LDAP Entry)都要定义自己的Object Classes。Object Class可以看作是LDAP Entry的模板,它定义了条目的属性集,包括必有属性(requited attribute)和可选属性(option attribute)。这里要着重指出的是,在LDAP的Entry中是不能像关系数据库的表那样随意添加属性字段的,一个Entry的属性是由它所继承的所有Object Classes的属性集合决定的,此外可以包括LDAP中规定的“操作属性”(操作属性是一种独立于Object Class而存在的属性,它可以赋给目录中的任意条目)。如果你想添加的属性不在Object Classes定义属性的范畴,也不是LDAP规定的操作属性,那么是不能直接绑定(在LDAP中,给Entry赋予属性的过程称为绑定)到条目上的,你必须自定义一个含有你需要的属性的Object Class,而后将此类型赋给条目。详细的内容将在下一章节中描述。

Object Class是可以被继承的,这使它看上去真的很像Java语言中的POJO对象。继承类的对象实例也必须实现父类规定的必有属性(requited attribute),同时拥有父类规定的可选属性(option attribute)。继承类可以扩展父类的必有属性和可选属性。由于Object Class的继承特性,因此在一个LDAP Entry上,objectClass属性是一个多值属性,它涵盖了Object Class的完整继承树,如用户条目uid=Linly , ou=People, dc=jsoso , dc=net,它直接实现了inetorgperson这个对象类,那么它的objectClass属性值为inetorgperson,organizationalPerson,person,top。

对Entry更多更细的规范被涵盖在了Directory Server Schema(目录服务模式)中。Directory Schema声明了完整的LDAP数据的存储规范,这包括数据的字节大小、数值范围和格式定义。

默认的,在一个LDAP服务器上,都定义有一套标准的Schema和一套为服务器功能定制的Schema。用户在需要的时候,是可以定制自己的LDAP属性和Object Class,以扩展标准Schema的功能,详细的内容将在下一章节中描述。在Sun Directory Server中,使用了标准LDAPv3 Schema,并在此基础上做了轻微的扩展。

sun directory server 

2.2 添加条目

         在Directory页面,右键点击主机服务表示,选择New Root Object…,刚刚建立的后缀就会显示出来。点击显示 New Object对话框,系统中的所有对象将显示出来,用户自定义的属性也将显示出来。选择相应的对象,点击OK,这个对象就会作为一个节点挂载在这个后缀上。 

sun directory server

2.3 LDAP提供的几种分组机制

LDAP提供了几种分组机制,使得信息管理更富有弹性。

2.3.1 静态组和动态组(Static Group and Dynamic Group)

(Group),声明一个目录条目的集合

静态组(Static Group):显式声明了一个它的集合成员,这种方式适用于少量明确的成员组合。

动态组(Dynamic Group:它定义了一个过滤条件,所有匹配条件的条目都是组的成员。所以称之为动态组,是因为每次读取其组员名单时,要动态计算过滤条件。
使用组的优点是能够快速的查找所属的成员;缺点是,给出任意的成员,无法获知它所属的组。因此从数据关联关系上看,Group适合一对多的查询。

2.3.2 受管角色、过滤器角色和嵌套角色(Managed Role、Filtered Role and Nested Role)

角色(Role它是条目的另一种集合形式。它与组不同的在于,给定一个任意的成员条目,我们能立刻获知它所属的角色。因此从数据关联关系上看,Role适合多对一的查询。角色定义仅对它们的父节点子树下面的目录条目有效。

受管角色(Managed Role它等价于Group中的静态组,不同的是,Role不是把组员信息添加到自身属性中,而是将自身的DN添加到组员条目的nsroledn属性中。

过滤器角色(Filtered Role它与动态组相似,通过定义条目过滤器来确定组员。

嵌套角色(Nested Role它是对角色定义的一种嵌套形式。可以嵌套其他的嵌套角色的。嵌套角色的成员,是其包含的所有角色成员的合集。嵌套角色通过包含从属于其它子树下的角色,可以扩展其搜索的scope。

2.3.3 服务类CoS

服务类实际上是一种属性的共享机制,它无须定义条目间的关联关系,却可以做到数据同步和空间优化。例如,在一个公司目录下,拥有上千个员工,他们拥有相同的公司地址属性;在传统的条目中,地址属性分别存贮在员工条目里,这样不但浪费存储空间,一旦地址变更,则要对员工条目进行逐一修改。采用CoS机制后,公司地址属性被存放在一个对象内,员工条目通过引用这个对象来获得地址信息,从而缩小的存储空间损耗,并方便了信息的修改。

CoS仅对其父节点子树下面的目录条目有效。CoS机制包含两个部分,CoS 定义条目和CoS模板条目。定义条目描述了属性是如何被引用的;模板条目描述了属性的值。CoS机制包含3种类型:

指针服务类(Pointer CoS)

在Pointer CoS中,CoS包含一个定义Definition Entry,它指定了两个属性:1.共享属性的名称;2.提供共享数据的模板DN。 另外CoS还要有一个Template Entry,它要提供共享的数据。在定义了Definition Entry和Template Entry后,Pointer CoS将为其父节点子树下面的所有条目(目标条目Target Entry)分配共享属性和模板所定义的值。

间接服务类(Indirect CoS)

在使用间接服务类时,在Definition Entry条目中定义了CoS的共享属性cosAttribut和一个用来间接指向模板的属性cosIndirectSpecifier。

首先,我们需要用cosIndirectSpecifier的值A作为属性名,来检索CoS父节点子树中所有拥有A属性的条目,作为目标条目Target Entry。

其次,根据找到的Target Entry条目中A属性的值来定位模板对象。

最后,再分别根据找到的模板对象中拥有的共享属性值赋给对应的Target Entry。

经典服务类(Classic CoS)

经典服务类同间接服务类有点相似,它也是对属性的间接应用。在Classic CoS的定义条目中,除了共享属性定义外,还有两个定义,一个是cosTemplateDn,它指向模板条目的父节点;另一个是cosSpecifier,它的值指向目标条目的属性A。由目标条目的属性A的值来代替模板条目的RND。则目标条目的属性A的值加上cosTemplateDn的值恰好定义一个唯一的模板条目。

2.4 对条目的操作(修改,添加子节点)

在此项目中将选择domain对象,建立“域”级的节点,objectclass属性所对应的值将为domain。

sun directory server

2.4.1 修改(编辑)条目

节点将显示在左侧窗口中,右键点击此节点,可对此节点进行删除,编辑,添加子节点等操作。LDAP提供了两种编辑方式:

1.  标准编辑方式(Edit With Generice Editer )

此编辑方式左侧将显示了此节点上挂载的对象对应的已经赋值的所有属性,用户可在文本框中直接编辑,右侧为各种操作按钮。

点击Add Attribute按钮,可为此对象添加更多属于此对象的属性。

选中一个属性(在属性对应的文本框中点击),然后点击Add Value,可为可用多值的属性添加数值。

sun directory server

2.  自定义编辑方式(Edit With Custom Editer)

sun directory server

2.4.2 在条目节点上添加子节点

sun directory server

根据2.3节说明的分组机制选择相应的分组方式,这里选择组织单元组。

3、        添加属性和对象

当想要添加的属性或业务需求的属性不在Object Classes定义的属性的范畴,也不是LDAP规定的操作属性,即系统属性无法满足现实需求时,就必须自定义一个含有你需要的属性的Object Class,而后将此类型赋给条目。

3.1 添加自定义属性

sun directory server 

在Configuration标签页中选择Schema条目,在右边选择Attributes标签页将显示系统中所有的属性列表,上面的类表是系统属性列表,用户不能更改,点击下面的Create按钮弹出创建属性对话框。

sun directory server 

Attribute name——属性名,不区分大小写,具有唯一性,必填

Attribute OID——属性的OID,是LDAP协议中描述的一些属性规则,可选

Attribute aliases separated with ‘,’——http://docs.opendap.org/index.php/Aliases(可选)

Attribute description——属性描述,可选

Syntax——属性类型,常用的类似String的DirectoryString,存储二进制文件的Binary…

sun directory server

Multi-valued——是否为多值属性

点击OK,添加的属性将显示在窗口下方的用户自定义属性列表中。选中某个自定义属性后点击Edit按钮,可对此属性进行修改;选中某个自定义属性后点击Delete按钮,将删除此属性。

3.2 添加自定义对象

sun directory server 

在Configuration标签页中选择Schema条目,在右边选择Object Classes标签页将显示系统中所有的对象列表。在左侧窗口中,上方显示的是系统已经存在的对象,是不可更改的;下方显示的是用户自定义对象,点击选中某个对象时,在左侧窗口中,上方将显示必须的属性(值不能为空),下方将显示可选属性(值可以为空)。

点击下方的Create按钮,弹出创建对象对话框:

sun directory server 

在Name文本框中填写对象名,在Parent中可选择对象继承的系统对象,默认将继承top对象。在窗口的左侧列出了系统中所有的属性,包括系统属性和用户自定义属性。在窗口右侧,上方可添加必填属性,下方可添加可选属性。

点击OK,回到configuration页,在用户自定义对象列表中将显示刚添加的对象。选中某个自定义对象后点击Edit按钮,可对此对象进行修改;选中某个自定义对象后点击Delete按钮,将删除此对象。

四、  优化LDAP

1、设置索引

索引将查找信息和 Directory Server 条目关联起来。

Directory Server支持以下几种索引:

         1出现索引 (pres) - 列出了具有特定属性的条目,与属性的值无关。

         2等式索引 (eq) - 使您能够高效地搜索包含特定属性值的条目。

         3近似索引 (approx) - 通过使用 ~= 过滤运算符提供了高效的“音似”搜索功能。

例如,近似索引对于搜索部分名称或拼错的名称很有用。Directory Server 使用

变音位语音算法的一个变体来执行近似索引搜索。

4子串索引 (sub) - 提供高效的属性值子字符串搜索,如cn=*john*。这种索引的

维护成本很高,因为每个值都有许多可能的子字符串。子字符串索引中每个条目的字符数不能少于两个。

5匹配规则索引 - 通过将本地化的匹配规则(也称为排序顺序)的OID与要索引的属性相关联,以加快在国际目录中的搜索速度。

6浏览索引 - 缩短在使用虚拟列表视图 (VLV) 控件执行搜索时的响应时间。可以

在目录树中任意的分支点上创建浏览索引,以便提高那些密集填充的子树(例

如ou=People,dc=example,dc=com)的显示性能。

在Configuration页可设置索引:

sun directory server

点击选中Data下相应的后缀后,右侧窗口的Indexes页显示的就是此后缀中的索引设置。

页面上方为系统所以,用户无法修改;下方为增加的索引,默认情况下,系统已经为一些系统属性增加了索引。例如cn属性指定了等式所以(Equality),出现索引(Pre)和子串索引(Sub)。

点击Add attribute按钮,弹出属性选择对话框,选择要添加索引的属性。点击OK后,属性显示在Additional Indexes列表中,然后可以指定相应的索引类型。如果要删除某个属性的索引可点击Delete attribute按钮。

sun directory server sun directory server

索引建立完之后,点击窗口下的Save按钮,弹出对话框:

sun directory server

    1如果仅添加或修改了一个或两个索引,或后缀必须可用,则应重新索引后缀。单击“重新索引后缀”按钮,显示重新索引对话框。默认情况下,会选定您修改过或添加到索引配置中的属性。单击“确定”,开始重新编制这些属性的索引。重新为带有数百万条条目的目录编制许多属性的索引可能花费数小时的时间,但是重新编制索引期间后缀将始终保持联机。

    2如果添加或修改多个属性的索引,且从此后缀导出了最近的 LDIF 文件,请单击“初始化后缀”按钮。在“初始化后缀”对话框中,输入或浏览到 LDIF 文件的路径和名称,然后单击“确定”。服务器将从 LDIF 文件重新初始化后缀,并根据新的配置创建所有索引。根据目录大小的具体情况,重新初始化后缀通常比重新编制两个或更多属性的索引要快,但是后缀在初始化过程中不可用。

    3如果不重新初始化后缀或重新索引后缀,则所有数据将仍然可用,但是将不会创建新的索引,也不会提高目录访问性能。

如果重新初始化后缀或重新索引后缀,对于添加的所有新数据以及目录中现有的数据,新索引立即生效。不需要重新启动服务器。

2、 设置缓存

目录服务器将目录信息缓存到内存中或磁盘上,以便能够更快地对客户机请求作出响应。正确调整的缓存能够将处理客户机请求时对访问磁盘子系统的要求降至最低。

LDAP支持三种类型的缓存:

1数据库缓存 -每个Directory Server实例具有一个数据库缓存,以数据库格式存放索引和条目。每个 Directory Server 实例具有一个数据库缓存。数据库缓存可存放页面,此页面来自包含索引和条目的数据库。每页不是一个条目,而是包含部分数据库的内存扇区。指定数据库缓存大小 (nsslapd-dbcachesize)。对数据库缓存大小所作的更改在重新启动服务器以后生效,且服务器启动时分配数据库缓存空间。

2条目缓存 -每个后缀具有一个条目缓存,存放早先操作过程中从数据库检索到的条目,并将其格式化以便快速发送给客户机应用程序。条目缓存存放最近访问的条目,并将其格式化以传递到客户机应用程序。指定后缀的条目缓存大小 (nsslapd-cachememsize) 和条目的最大数量(nsslapd-cachesize)。

3导入缓存 –每个Directory Server实例具有一个与数据库缓存类似的导入缓存,在批量加载过程中使用。

缓存可在Configuration页面下进行配置。点击左侧窗口中的Performance树,右侧窗口的Caching标签页将显示系统的缓存配置情况。点击数值所在的文本框可直接进行修改,修改完后点击Save,将提示重启服务,使配置生效。

sun directory server 

查看缓存使用情况在Status标签页单击suffixes,此页显示了命中次数,命中率,缓存大小等。

sun directory server

3、 配置引荐(主备机)

使用引荐告诉客户机应用程序当本地的信息不可用时应联系哪个服务器。引荐是指向远程后缀或条目的指针,目录服务器将其作为结果返回到客户机。

在Configuration页,点击服务器根树,在右侧窗口中点击Network标签

sun directory server

选中“返回引荐”复选框,并在文本字段中输入LDAP URL。例如:

ldaps://10.0.12.42:14690/dc=organization,dc=com

多个LDAP URL可用空格隔开。

配置完主机的引荐之后,参见第三章第一节的配置双主,再将主机的数据通过复制机制复制到备机,并指定主备机间实时更新完成主备机配置。

4、        导入导出数据

导出整个服务器实例的数据

sun directory server 

导出单个后缀的数据

sun directory server 

五、  使用LDAP Browser/Edit工具

使用LDAP Browser/Edit工具可以快速而有效的对LDAP 服务器数据进行管理。通过双击文件夹中的“lbe.bat”批处理文件启动此工具。

1、        创建连接

点击File菜单,选择Connect选项将弹出LDAP连接窗口。其中Session List标签页将显示之前保存的已创建的连接列表,选中一个Session可对其进行Edit/Copy/Delete/Rename等操作。Quick Connect可快速建立新的连接,但不会被保存到Session List中。

sun directory server sun directory server

点击New按钮将弹出的New Session窗口,在Name标签页输入新的连接的名字,在Connection标签页中输入相应的值,点击Save保存。

         Host——ldap主机的IP地址

         Port——ldap的服务端口

         Version——ldap服务器所使用的ldap协议版本,包括LDAP V2/V3

         Base DN——将要连接的ldap服务中的目录的根节点名称,填写完host和port后可点击Fetch DNs进行查询,LDAP Browser/Edit将会把服务器上所有的根节点查询出来,然后在Base DN右边的箭头中选择相应的DN。

         SSL——是否使用加密方式连接

         Anonymous bind——是否可匿名访问(绑定),一般LDAP服务器是不设置匿名绑定的。

         User DN——目录管理员的名称,例如cn=Directory Manager

         Password——目录管理员的密码

         append base DN——是否追加根节点名称,一般不需要

sun directory server

新建的连接将显示在Session List标签页中,选择一个连接,点击Connect即可建立连接。

2、 节点操作

sun directory server

LDAP Browser/Edit工具将显示所选连接中对应的根节点下的所有节点,点击某个节点,右侧窗口将显示这个节点的所有属性以及属性所对应的值。

右键点击某个节点将弹出菜单,在菜单中提供了各种对此节点的操作:

         View Entry——查看此节点,将显示此节点的所有属性以及对应的值,同右侧窗口中显示的一样。

         Search——查询此节点中的节点,将弹出查询窗口。在查询窗口中输入相应的查询数据进行查询,其中:

                   Search DN——查询的节点所在的节点即父节点名称,也就是刚才所选节点的全称。

         Filter——过滤值,LDAP使用一种类似正则表达式的查询语句进行查询,在附录中有详细的介绍。

         Attributes——查询结果显示的属性,在查询节点具有属性比较多时可进行指定。

         Search scope——查询范围,选定One level将对父节点下的所有节点进行递归查询,包括所有的树和树叶。Sub-tree level只查询父节点下的子节点,即指查询树和树叶,而不包括下一级的树或树叶。

         查询结果将显示在下面的窗口中。

sun directory server  sun directory server

         Sort Tree——对节点进行排序,可选择升序和降序两种方式。

         Refresh——刷新。

         Edit——对此节点进行编辑,包括添加属性,删除此节点,编辑此节点,重命名此节点等。其中在编辑此节点窗口中可直接对此节点的属性值进行修改。 

sun directory server

sun directory server 

3、 导入导出LDIF文件

3.1 导入LDIF

在LDAP Browser/Edit工具的主窗口中,点击LDIF菜单选择Import项,将显示LDIF Improt窗口,在LDIF File中选择ldif文件的位置,在Import method中选择导入方式,点击Import即可导入到所选连接中对应的节点中。

         Add only——只添加,只添加节点中没有的数据,遇到节点名称相同但属性值不同的情况将忽略。

         Update only——只更新,只更新已经存在的节点里数据。

         Update/Add——更新/添加

sun directory server 

3.2     导出LDIF

在LDAP Browser/Edit工具的主窗口中,点击LDIF菜单选择Export项,将显示LDIF Export窗口。选择存储LDIF文件的路径,选择导出方式,点击Export即可导出。

sun directory server 

六、  附录

1、        基本 LDAP 语法

=(等于)

此 LDAP 参数表明某个属性等于某个值的条件得到满足。例如,如果希望查找“名“属性为“John”的所有对象,可以使用:

(givenName=John)

这会返回“名”属性为“John”的所有对象。圆括号是必需的,以便强调 LDAP 语句的开始和结束。

&(逻辑与)

如果具有多个条件并且希望全部条件都得到满足,则可使用此语法。例如,如果希望查找居住在 Dallas 并且“名”为“John”的所有人员,可以使用:

(&(givenName=John)(l=Dallas))

请注意,每个参数都被属于其自己的圆括号括起来。整个 LDAP 语句必须包括在一对主圆括号中。操作符 & 表明,只有每个参数都为真,才会将此筛选条件应用到要查询的对象。

!(逻辑非)

此操作符用来排除具有特定属性的对象。假定您需要查找“名”为“John”的对象以外的所有对象。则应使用如下语句:

(!givenName=John)

此语句将查找“名”不为“John”的所有对象。请注意:! 操作符紧邻参数的前面,并且位于参数的圆括号内。由于本语句只有一个参数,因此使用圆括号将其括起以示说明。

*(通配符)

可使用通配符表示值可以等于任何值。使用它的情况可能是:您希望查找具有职务头衔的所有对象。为此,可以使用:

(title=*)

这会返回“title”属性包含内容的所有对象。另一个例子是:您知道某个对象的“名”属性的开头两个字母是“Jo”。那么,可以使用如下语法进行查找:

(givenName=Jo*)

这会返回“名”以“Jo”开头的所有对象。

以下是 LDAP 语法的高级使用示例:

您需要一个筛选条件,用来查找居住在 Dallas 或 Austin,并且名为“John”的所有对象。使用的语法应当是:

(&(givenName=John)(|(l=Dallas)(l=Austin)))

您发现应用程序日志中有 9,548 个事件,因此需要查找导致这些日志事件的所有对象。在此情况下,您需要查找所有被禁用的用户 (msExchUserAccountControl=2),这些用户的 msExchMasterAccountSID 没有值。使用的语法应当是:

(&(msExchUserAccountControl=2)(!msExchMasterAccountSID=*))

注意:

! 操作符与通配符的结合使用可查找属性未设置为任何值的对象