【问题标题】:IBM Liberty LDAP FilterIBM Liberty LDAP 过滤器
【发布时间】:2017-08-30 22:26:55
【问题描述】:

您好,我们遇到了与这篇 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 主体名称在配置的用户注册表中存在多条记录。主体名称在所有用户注册表中必须是唯一的。 在 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(未知来源)

【问题讨论】:

    标签: websphere-liberty


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2011-01-17
      相关资源
      最近更新 更多