IBM Liberty LDAP过滤器

时间:2016-11-14 22:44:32

标签: websphere-liberty

您好我们遇到了与此IBM文章相同的问题:

http://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tsec_was_ad_filter.html

我们有两个子域下的用户(在同一个顶级域下)。是否有IBM Liberty专家可以建议如何正确构建搜索过滤器,以便我们可以获取用户(请参阅下面的Liberty错误日志)。

以下是我们当前的过滤器:

<ldapRegistry baseDN DC=abc,DC=CORP,DC=com" bindDN=" CN=ServiceID,OU=Service Accounts,OU=Accounts,DC=abc,DC=CORP,DC=com" bindPassword="${bindPassword}" host=" abc.corp.com” id="ldap" ignoreCase="false" ldapType="Microsoft Active Directory" port =”3268" realm="BasicRealm">
        <activedFilters groupFilter="(&amp;(cn=%v)(objectcategory=group))" groupIdMap="*:cn" groupMemberIdMap="memberOf:member" userFilter="(&amp;(objectcategory=user)(userPrincipalName=%v))" userIdMap="user:sAMAccountName">
        </activedFilters>
    </ldapRegistry>

看到错误:

com.ibm.ws.security.registry.EntryNotFoundException:CWIML4538E:无法完成用户注册表操作。在配置的用户注册表中,XXXXXXX主体名称存在多条记录。所有用户注册表的主体名称必须是唯一的。     at com.ibm.ws.security.wim.registry.util.UniqueIdBridge.getUniqueUserId(UniqueIdBridge.java:305)     在com.ibm.ws.security.wim.registry.WIMUserRegistry.getUniqueUserId(WIMUserRegistry.java:291)     在com.ibm.ws.security.authentication.jaas.modules.HashtableLoginModule.handleUserId(HashtableLoginModule.java:177)     在com.ibm.ws.security.authentication.jaas.modules.HashtableLoginModule.login(HashtableLoginModule.java:127)     在com.ibm.ws.kernel.boot.security.LoginModuleProxy.login(LoginModuleProxy.java:51)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     在javax.security.auth.login.LoginContext.invoke(未知来源)     在javax.security.auth.login.LoginContext.access $ 000(未知来源)     在javax.security.auth.login.LoginContext $ 4.run(未知来源)     在javax.security.auth.login.LoginContext $ 4.run(未知来源)     在java.security.AccessController.doPrivileged(未知来源)     在javax.security.auth.login.LoginContext.invokePriv(未知来源)     在javax.security.auth.login.LoginContext.login(未知来源)

1 个答案:

答案 0 :(得分:0)

如错误消息所示,问题是由具有相同principalName的多个用户引起的。如果您发现了不需要的用户,通常可以通过缩小ldap注册表的baseDN或为用户指定搜索库来解决这个问题:

<ldapEntityType name="PersonAccount">
            <searchBase>ou=Users,DC=abc,DC=CORP,DC=com</searchBase>
</ldapEntityType>