【发布时间】:2017-08-30 22:26:55
【问题描述】:
您好,我们遇到了与这篇 IBM 文章相同的问题:
我们有两个子域下的用户(在同一个顶级域下)。是否有 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="(&(cn=%v)(objectcategory=group))" groupIdMap="*:cn" groupMemberIdMap="memberOf:member" userFilter="(&(objectcategory=user)(userPrincipalName=%v))" userIdMap="user:sAMAccountName">
</activedFilters>
</ldapRegistry>
看到的错误:
com.ibm.ws.security.registry.EntryNotFoundException: CWIML4538E: 无法完成用户注册表操作。 XXXXXXX 主体名称在配置的用户注册表中存在多条记录。主体名称在所有用户注册表中必须是唯一的。 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 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(未知来源)
【问题讨论】: