Sun Java System Web Server 7.0 管理员指南

静态组和动态组

组是 LDAP 数据库中用于描述一组对象的对象。Web Server 7.0 组由共享某个通用属性的用户组成。例如,对象集可以是您公司市场部的一些员工。这些员工可能属于一个名为 Marketing 的组。

对于 LDAP 服务,定义组的成员资格的方法有两种:静态和动态。静态组可显式枚举其成员对象。静态组是一个 CN,其中包含 uniqueMembers 和/或 memberURLs 和/或 memberCertDescriptions。对于静态组,其成员并不共享某个通用属性,但 CN=<Groupname> 属性除外。

动态组允许您使用一个 LDAP URL 来定义一组仅适用于组成员的规则。对于动态组,其成员共享某个通用属性或一组在 memberURL 过滤器中定义的属性。例如,如果您需要一个包含 Sales 中所有员工的组,并且这些员工已经位于 LDAP 数据库中的

"ou=Sales,o=Airius.com" 之下,则可以使用以下 memberurl 定义一个动态组:

ldap:///ou=Sales,o=sun??sub?(uid=*)

随后,该组将包含 "ou=Sales,o=sun" 点下的树中具有 uid 属性的所有对象,即所有 Sales 成员。

对于静态组和动态组,如果您使用 memberCertDescription,则其成员可以通过证书共享某个通用属性。请注意,这仅在 ACL 使用 SSL 方法时才适用。

创建新组后,您可以向其中添加用户或成员。

静态组

对于 LDAP 服务,您可以通过 Administration Server 在任意数量的用户的 DN 中指定相同的组属性来创建静态组。静态组不会改变,除非您向其中添加用户或从中删除用户。

创建静态组的指导原则

使用 Administration Server 表单创建新静态组时,请考虑以下指导原则:

动态组

动态组具有一个 groupOfURLs 对象类 objectclass,可以没有也可以具有多个 memberURL 属性,其中每个属性都是一个描述一组对象的 LDAP URL。

对于 LDAP 服务,如果您希望基于任何属性自动将用户分组,或者希望将 ACL 应用于包含匹配 DN 的特定组,则 Web Server 允许您创建动态组。例如,您可以创建一个组,该组将自动包括任何包含属性 department=marketing 的 DN。如果您对 department=marketing 应用搜索过滤器,搜索将返回一个组,其中包含具有属性 department=marketing 的所有 DN。然后,您可以从基于此过滤器的搜索结果中定义一个动态组。随后,您可以为所获得的动态组定义一个 ACL。

Web Server 如何实现动态组

Web Server 在 LDAP 服务器模式中以 objectclass = groupOfURLs 的方式实现动态组。groupOfURLS 类可以有多个 memberURL 属性,每个属性都包含一个 LDAP URL,用于枚举目录中的一组对象。组的成员是这些对象集的总和。例如,下面的组只包含一个成员 URL:

ldap:///o=mcom.com??sub?(department=marketing)

该实例描述了一个由 "o=mcom.com" 下属于 "marketing" 部门的所有对象组成的集合。LDAP URL 可以包含搜索基 DN、范围和过滤器;但是,不包含主机名和端口。这意味着您只能引用同一个 LDAP 服务器上的对象。LDAP URL 支持所有范围。

DN 会自动包含在内,因而不需要您向组中添加每个 DN。组是动态变化的,因为每次 ACL 验证需要查找组时,Sun ONE Web Server 都将执行一个 LDAP 服务器搜索。ACL 文件中使用的用户和组名与 LDAP 数据库中的对象的 cn 属性相对应。


注 –

Web Server 使用 cn (commonName) 属性作为 ACL 的组名。


dbswitch.conf 配置文件(将 ACL 数据库名称与实际的 LDAP 数据库 URL 相关联)和 ACL 文件(定义要用于每个 ACL 的数据库)中,同时定义了从 ACL 到 LDAP 数据库的映射。例如,如果需要名为 "staff" 的组中成员的基本访问权限,ACL 代码将查找对象类为 groupOf<anything> 且 CN 被设置为 "staff" 的对象。该对象可通过两种方法来定义组成员,即显式枚举出成员 DN(与静态组的 groupOfUniqueNames 的操作相同),或指定 LDAP URL(例如,groupOfURLs)。

组可以同时为动态和静态

组对象可以同时包含 objectclass = groupOfUniqueMembersobjectclass = groupOfURL;因此,"uniqueMember" 和 "memberURL" 属性都是有效的。组成员是其静态和动态成员的总和。

动态组对服务器性能的影响

使用动态组对服务器的性能有所影响。如果您正在测试组成员,而该 DN 不是静态组的成员,则 Web Server 将检查数据库的基 DN 中的所有动态组。要完成此任务,Web Server 需要检查每个 memberURL 是否匹配,方法是对照用户 DN 检查其基 DN 和范围,然后使用用户 DN 作为基 DN 并使用 memberURL 的过滤器来执行基搜索。这一过程将产生大量的单个搜索操作。

创建动态组的指导原则

使用 Administration Server 创建新动态组时,请考虑以下指导原则:

表 8–1 动态组:必需的参数

参数名 

描述 

<base_dn>

搜索基的标识名 (Distinguished Name, DN),或 LDAP 目录中开始执行搜索的起点。此参数通常被设置为目录的后缀或根,例如 "o=mcom.com"。

<attributes>

搜索将返回的属性列表。要指定多个属性,请使用逗号来分隔属性(例如,"cn,mail,telephoneNumber");如果不指定属性,将返回所有属性。请注意,检查动态组成员资格时将忽略此参数。

<scope>

搜索范围,其值可以是: 

  • base 仅检索 URL 中所指定标识名 (<base_dn>) 的相关信息。

  • one 检索 URL 中所指定标识名 (<base_dn>) 的下一级条目的相关信息。此范围不包括基条目。

  • sub 检索 URL 中所指定标识名 (<base_dn>) 下面所有级别的条目的相关信息。此范围包括基条目。

    此参数是必需的。

<(filter)>

应用于指定搜索范围内的条目的搜索过滤器。如果您使用的是 Administration Server 表单,则必须指定此属性。请注意,必须带有括号。 

此参数是必需的。 

请注意,<attributes><scope><(filter)> 参数是根据它们在 URL 中的位置来标识的。因此,即使不想指定任何属性,也需要使用问号来表明不限制该字段。