0

使用 JAAS 时,有没有办法指定角色(组)搜索查询返回的属性?

返回的组在属性中包含大约 100k 个条目,这些条目uniqueMember使应用服务器和 OpenLDAP 之间的链接饱和。由于查询只需要该cn属性,我想告诉容器仅在执行搜索时请求该属性。

目前,查询没有设置任何要返回的属性,它返回所有属性。

DEV(码头)java.security.auth.login.config看起来像这样

devldap {
   org.eclipse.jetty.plus.jaas.spi.LdapLoginModule required
   debug="true"
   contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
   hostname="ldap-dev.example.com"
   port="389"
   bindDn="cn=Manager,dc=example,dc=com"
   bindPassword="xxxx"
   authenticationMethod="simple"
   forceBindingLogin="true"
   userBaseDn="ou=users,dc=example,dc=com"
   userRdnAttribute="uid"
   userIdAttribute="uid"
   userPasswordAttribute="userPassword"
   userObjectClass="inetOrgPerson"
   roleBaseDn="ou=groups,dc=example,dc=com"
   roleNameAttribute="cn"
   roleMemberAttribute="uniqueMember"
   roleObjectClass="groupOfUniqueNames";
   };
4

1 回答 1

4

那里有严重错误。它根本不应该返回组条目属性,只返回 CN。

这看起来像是org.eclipse.jetty.plus.jaas.spi.LdapLoginModule中的一个主要错误。它应该将 的属性设置为in 。您需要报告它,和/或自己修补它。returningAttributesSearchControlnew String[]{_roleNameAttribute}getUserRolesByDn()

如果您使用的是 OpenLDAP,则可以考虑使用memberOf覆盖。这为用户自己提供了一个属性,列出了他所属的所有组。但是它不是回顾性的,并且由于您显然已经拥有一个大目录,因此您将有一项工作可以从现有组中填充它。覆盖将在安装后自动维护,但仅适用于安装后发生的组更新。

于 2012-07-02T00:41:40.500 回答