2016-11-14 6 views
0

Привет мы столкнулись с такой же вопрос, как в этой статье IBM:IBM Liberty LDAP фильтр

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) at com.ibm.ws.security.wim.registry.WIMUserRegistry.getUniqueUserId (WIMUserRegistry.java:291) at com.ibm.ws.security.authentication.jaas.modules.HashtableLoginModule.handleUserId (HashtableLoginModule.java:177) at 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 (Неизвестно Источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) at java.la ng.reflect.Method.invoke (Неизвестный источник) at javax.security.auth.login.LoginContext.invoke (Неизвестный источник) at javax.security.auth.login.LoginContext.access $ 000 (Неизвестный источник) в javax. security.auth.login.LoginContext $ 4.run (Неизвестный источник) at javax.security.auth.login.LoginContext $ 4.run (Неизвестный источник) at java.security.AccessController.doPrivileged (Неизвестный источник) at javax.security .auth.login.LoginContext.invokePriv (Unknown Source) в javax.security.auth.login.LoginContext.login (Unknown Source)

ответ

0

Как показывает сообщение об ошибке, проблема вызвана наличием нескольких пользователей с одинаковым PrincipalName. Если вы находите нежелательных пользователей, это обычно можно решить, сузив либо baseDN реестра ldap, либо указав базу поиска для пользователей:

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