具有相同主体名称的多个实体

登录过程中显示“找到多个主体”错误时遵循这些步骤进行故障诊断。

问题

发生类似于以下示例的异常:

00000014 exception     1 com.ibm.ws.wim.registry.util.UniqueIdBridge getUniqueUserId 
CWWIM4538E Multiple principals were found for the 'wimadmin' principal name.
00000014 exception     1com.ibm.ws.wim.registry.util.UniqueIdBridge 
getUniqueUserIdcom.ibm.websphere.wim.exception.EntityNotFoundException: 
CWWIM4538E 	Multiple principals were found for the 'wimadmin' principal name.
at com.ibm.ws.wim.registry.util.UniqueIdBridge.getUniqueUserId(UniqueIdBridge.java:168)

在此示例中,virtual member manager 跟踪显示两个具有相同主体名称 wimadmin 的实体,这两个实体由 search() API 返回。这会引发异常。

uniqueName="uid=wimadmin,o=defaultWIMFileBasedRealm"
uniqueName="CN=wimadmin,OU=US,DC=COM

因此,在此示例中,为 security.xml 文件中的 primaryAdminId 分配相同名称,如下所示。这将在登录过程中引发“多个主体”异常。以下示例分解为多行,仅用于阐述。

<userRegistries 
xmi:type="security:WIMUserRegistry" 
xmi:id="WIMUserRegistry_1"
serverId="wimadmin" 
serverPassword="{xor}****************" 
realm="WIMREALM" 
ignoreCase="true" 
useRegistryServerId="false" 
primaryAdminId="wimadmin" 
registryClassName="com.ibm.ws.wim.registry.WIMUserRegistry"/>

解决方案

Virtual member manager 不允许在领域中多次使用相同用户标识。例如,在不同 LDAP 目录中不能具有相同用户标识,即使是在不同组织结构下。因此,不同存储库中用户标识必须唯一。

考虑具有相同名称 wimadmin 的主管理用户存在于文件存储库和 LDAP 存储库中的情境。使用 WebSphere Application Server 管理控制台并遵循以下步骤从文件存储库移除重复条目。

  1. 使用有效用户标识登录。如果用户标识存在于此存储库,且此用户标识没有重复的条目,那么用户标识有效。
  2. 在文件存储库中创建用户标识(称为 wimadmin2)。
  3. 使用管理用户角色页面来将用户标识 wimadmin2 添加到 WebSphere Application Server 管理员角色。
  4. 使用联合存储库配置页面来将 LDAP 存储库和基本条目添加到领域。
  5. 重新启动服务器。
  6. 使用用户标识 wimadmin2 登录到 WebSphere Application Server。
  7. 使用管理用户页面以从文件存储库删除名为 wimadmin 的用户标识。
  8. 注销。
  9. 从 LDAP 存储库使用用户标识 wimadmin 登录。

目前每个存储库具有唯一 primaryAdminID。



使用条款 | 反馈