配置轻量级目录访问协议搜索过滤器

使用本主题来配置 LDAP 搜索过滤器。 要修改特定 LDAP 目录类型的现有用户和组过滤器,需要执行这些步骤;要设置证书过滤器以将证书映射到 LDAP 服务器中的条目,也需要执行这些步骤。

准备工作

WebSphere® Application Server 使用轻量级目录访问协议 (LDAP) 过滤器从 LDAP 目录服务器搜索和获取有关用户和组的信息。 为产品支持的每个 LDAP 服务器提供缺省过滤器集合。 可以修改这些过滤器,以适合于您的 LDAP 配置。 修改过滤器并单击 确定应用 之后,独立 LDAP 注册表面板中的目录类型将更改为 custom,这指示将使用定制过滤器。 而且,可开发过滤器,以支持 LDAP 服务器的任何其他类型。 支持其他 LDAP 目录的工作是可选的,而其余 LDAP 目录类型不受支持。 在管理控制台中完成以下步骤。

过程

  1. 单击 安全性 > 全局安全性
  2. 在 "用户帐户存储库" 下,选择 独立 LDAP 注册表 ,然后单击 配置
  3. 在 "其他属性" 下,单击 高级轻量级目录访问协议 (LDAP) 用户注册表设置
  4. 根据需要修改用户过滤器。
    用户过滤器用于搜索用户的注册表且通常用于对用户指定安全角色。 它还用于使用过滤器中指定的属性认证用户。 该过滤器指定用于在目录服务中查询用户的属性。

    在以下示例中,指定为 %v 的属性(这是用户的短名称)必须是唯一键。 具有相同对象类的两个 LDAP 条目不能有相同的短名称。 要根据用户的用户标识 (uid) 查询用户,并且要使用 inetOrgPerson 对象类,指定以下语法:

    (&(uid=%v)(objectclass=inetOrgPerson)

    有关此语法的更多信息,请参阅 将特定目录服务器用作 LDAP 服务器 文档。

  5. 根据需要修改 Kerberos 用户过滤器。
    Kerberos 用户过滤器名称用于在注册表中搜索 Kerberos 主体名称。 指定用于保留 Kerberos 主体名称的 LDAP 属性。
    IBM Lotus Domino 缺省 krbuser 过滤器:
    (&(krbPrincipalName=%v)(objectcategory=Person))
    IBM SecureWay Directory Server 缺省 krbuser 过滤器:
    (&(krbPrincipalName=%v)(objectcategory=ePerson))
    Microsoft Active Directory 缺省 krbuser 过滤器:
    (&(userprincipalname=%v)(objectcategory=user))
    Sun Java System Directory Server 缺省 krbuser 过滤器:
    (&(krbPrincipalName=%v)(objectcategory=inetOrgPerson))
    Novell eDirectory 缺省 krbuser 过滤器:
    (&(krbPrincipalName=%v)(objectcategory=Person))
  6. 可选: 如果您正在使用联合存储库,请根据需要修改 Kerberos 属性名称。
    Kerberos 属性名称用于在注册表中搜索 Kerberos 主体。 指定用于保留 Kerberos 主体名称的 LDAP 属性。
    IBM Lotus Domino 缺省 krbuser 过滤器:
    krbPrincipalName
    IBM SecureWay Directory Server 缺省 krbuser 过滤器:
    krbPrincipalName
    Microsoft Active Directory 缺省 krbuser 过滤器:
    userprincipalname
    Sun Java System Directory Server 缺省 krbuser 过滤器:
    krbPrincipalName
    Novell eDirectory 缺省 krbuser 过滤器:
    krbPrincipalName
  7. 根据需要修改组过滤器。
    组过滤器用于搜索组的注册表且通常用于对组指定安全角色。 另外,通过在目录服务中查询组过滤器用于指定属性。

    在以下示例中,指定为 %v 的属性(这是组的短名称)必须是唯一键。 具有相同对象类的两个 LDAP 条目不能有相同的短名称。 要根据组的公共名 (CN) 查询组,并且要使用 groupOfNames 对象类或 groupOfUniqueNames 对象类,请指定以下语法:

    (&(cn=%v)(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)))

    有关此语法的更多信息,请参阅 将特定目录服务器用作 LDAP 服务器 文档。

  8. 根据需要修改用户标识映射。
    此过滤器将用户的短名称映射到 LDAP 条目并指定使用用户的短名称显示这些用户时表示用户的一段信息。 例如,要按用户的标识显示 object class = inetOrgPerson 的条目,请指定 inetOrgPerson:uid。 该字段包含多个 objectclass:property 对,以分号(;)分隔。为了给getCallerPrincipal方法和getUserPrincipal方法等方法提供一致的值,将使用通过该过滤器获得的简短名称。 例如,CN=Bob Smith, ou=austin.ibm.com, o=IBM, c=US 用户可以使用定义的任何属性(例如,电子邮件地址、社会保障号等)登录,但是调用这些方法时,无论该用户是如何登录的,都返回 bob 用户标识。
    注意:只有getUserDisplayNameAPI 才尊重用户 ID 映射。
  9. 根据需要修改组标识映射过滤器。
    此过滤器将组的短名称映射到 LDAP 条目并指定显示组时表示组的一段信息。 例如,要按组名显示组,指定 *:cn。 在这种情况下,星号 (*) 是搜索任何对象类的通配符。 此字段接受多个 objectclass:property 对,之间用分号 (;) 分隔。
  10. 根据需要修改组成员标识映射过滤器。
    此过滤器标识用户到组成员资格。 对于SecureWay,和 Domino 目录类型,该字段用于查询与指定对象类别相匹配的所有组,以查看指定属性中是否包含用户。 例如,要获取属于组(具有 groupOfNames 对象类)的所有用户以及包含在成员属性中的用户,请指定 groupOfNames:member。 此语法(对象类的属性)存储属于组的成员列表,该组由对象类表示。 此字段采用多个以分号 (;) 定界的 "对象类: 属性" 对。 有关此语法的更多信息,请参阅 将特定目录服务器用作 LDAP 服务器

    对于 IBM® Tivoli® Directory Server, Sun ONE 和 Active Directory,此字段用于使用存储在用户对象中的信息来查询组中的所有用户。 例如,memberof:member 过滤器(对于 Active Directory)用于获取用户对象的 memberof 属性,以获取用户所属的所有组。 member 属性用于获取组中使用组对象的所有用户。 使用用户对象获取组信息可以提高性能。

  11. 如果 LDAP 服务器不支持递归服务器端搜索,请选择 执行嵌套组搜索 选项。
  12. 根据需要修改“证书映射方式”。
    当选择 LDAP 作为注册表时,可以将 X.590 证书用于用户认证。 此字段用户标识是否由 EXACT_DNCERTIFICATE_FILTER 将 X.509 证书映射到 LDAP 目录用户。 如果选择 EXACT_DN,那么证书中的 DN 必须与 LDAP 服务器中的用户条目完全匹配(包括大小写和空格匹配)。
    在独立 LDAP 注册表设置中选择授权时忽略大小写选项,以使权限不区分大小写。 要访问“独立 LDAP 注册表设置”面板,请完成以下步骤:
    1. 单击 安全性> 全局安全性
    2. 在 "用户帐户存储库" 下,单击 可用域定义 下拉列表,然后选择 独立 LDAP 注册表
  13. 如果选择 CERTIFICATE_FILTER,请指定用于将客户机证书中的属性映射到 LDAP 中的条目的 LDAP 过滤器。
    如果运行时有多个 LDAP 条目与过滤器规范匹配,那么认证失败,这是因为它会导致模糊匹配结果。 此过滤器的语法或结构为: LDAP attribute=${Client certificate attribute} (例如, uid=${SubjectCN})。

    过滤器规范的一侧是 LDAP 属性,此属性依赖于 LDAP 服务器配置使用的模式。 过滤器规范的另一侧是客户机证书的某个公共属性。 请注意,作为客户机证书中公共属性之一的过滤器规范必须以美元符号 ($) ,左括号 ({), and end with a close bracket (}) 结尾。 在作为客户机证书中的公共属性之一的过滤器规范侧使用以下证书属性值。 字符串的大小写很重要。

    • ${UniqueKey}
    • ${PublicKey}
    • ${IssuerDN}
    • ${Issuer<xx>}

      其中, <xx> 将替换为表示签发者专有名称的任何有效组件的字符。 例如,可以使用 ${IssuerCN} 来作为签发者的公共名。

    • ${NotAfter}
    • ${NotBefore}
    • ${SerialNumber}
    • ${SigAlgName}
    • ${SigAlgOID}
    • ${SigAlgParams}
    • ${SubjectDN}
    • ${Subject<xx>}

      where <Xx> is replaced by the characters that represent any valid component of the Subject Distinguished Name. 例如,可以使用 ${SubjectCN} 来作为主体集的公共名。

      如果证书包含由加号字符 (+) 分隔的多值相对专有名称 (RDN) ,如 RFC 4514 部分 2.2中所述,那么必须指定 security.registry.ldap.compoundRDNParsingEnabled 定制属性。 要指定此属性,请完成以下步骤:
      1. 单击 安全性 > 全局安全性
      2. 授权忽略大小写 复选框之后的 定制属性 字段中,将 security.registry.ldap.compoundRDNParsingEnabled 定制属性设置为 true
      3. 重新启动服务器。
    • ${Version}

    要启用此字段,为证书映射选择 CERTIFICATE_FILTER

    避免麻烦: 不支持将主题备用名称 (SAN) 作为证书过滤器项。
  14. 单击应用
    在“高级 LDAP 设置”面板中修改了任何 LDAP 用户或组过滤器时,单击应用。 单击确定会将您导航到“独立 LDAP 注册表”面板,它包含先前的 LDAP 目录类型,而不是定制 LDAP 目录类型。 在“独立 LDAP 注册表”面板中单击确定应用,将保存后备级别 LDAP 目录类型以及该目录的缺省过滤器。 此操作覆盖您对于过滤器所作的任何更改。 要避免覆盖更改,可以执行以下任一操作:
    • 在“高级轻量级目录访问协议 (LDAP) 用户注册表设置”面板中单击单击。 单击 安全性> 全局安全性 ,并将用户帐户存储库类型更改为 Stand-alone custom registry
    • 从“独立 LDAP 注册表”面板选择定制类型。 单击应用,然后通过单击“高级轻量级目录访问协议 (LDAP) 用户注册表设置”面板来更改过滤器。 完成更改后,单击应用确定

    更改验证在此面板中不会发生。 当您在“全局安全性”面板上单击确定应用时,会进行验证。 如果您是首次启用安全性,那么完成剩余的步骤,并转至“全局安全性”面板。 选择独立 LDAP 注册表作为用户帐户存储库。 如果已启用安全性,且更改了此面板上的任何信息,请转至“全局安全性”面板并单击确定应用以验证更改。 如果未验证您的更改,那么服务器可能未启动。

结果

这些步骤会导致配置 LDAP 搜索过滤器。 要修改特定 LDAP 目录类型的现有用户和组过滤器,需要执行这些步骤。 这些步骤也用于设置证书过滤器,以将证书映射到 LDAP 服务器中的条目。

下一步做什么?

  1. 通过在“全局安全性”面板上单击确定应用来验证此设置。
  2. 保存、停止和启动所有产品服务器(包括单元、节点和所有应用程序服务器)以使此面板中的任何更改生效。
  3. 服务器启动后,完成所有安全性相关的任务(获取用户、获取组等)以验证对过滤器的更改是否起作用。