同じプリンシパル名を持つ複数のエンティティー

ログイン時に「複数のプリンシパルが見つかりました」エラーが表示される場合には、以下の手順に従ってトラブルシューティングを行ってください。

問題

次の例のような例外が発生します。

00000014 exception     1 com.ibm.ws.wim.registry.util.UniqueIdBridge getUniqueUserId 
CWWIM4538E 'wimadmin' プリンシパル名で複数のプリンシパルが見つかりました。
00000014 exception     1com.ibm.ws.wim.registry.util.UniqueIdBridge 
getUniqueUserIdcom.ibm.websphere.wim.exception.EntityNotFoundException: 
CWWIM4538E 'wimadmin' プリンシパル名で複数のプリンシパルが見つかりました。
at com.ibm.ws.wim.registry.util.UniqueIdBridge.getUniqueUserId(UniqueIdBridge.java:168)

この例では、Virtual member manager トレースに、同じプリンシパル名 wimadmin を持つエンティティーが 2 つあり、これのエンティティーが 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 では、レルムで同じユーザー ID を複数回使用することはできません。例えば、異なる組織構造の場合でも、異なる LDAP ディレクトリー内に同じユーザー ID を使用することはできません。したがって、ユーザー ID は複数のリポジトリーにわたって固有でなければなりません。

ファイル・リポジトリーと LDAP リポジトリーに、同じ名前 (wimadmin) を持つ 1 次管理ユーザーが存在しているとします。この場合は、WebSphere Application Server 管理コンソールで、次の手順に従ってファイル・リポジトリーから重複する項目を削除してください。

  1. 有効なユーザー ID を使用してログインします。有効なユーザー ID とは、このリポジトリー内に存在しており、重複する項目がないユーザー ID です。
  2. ファイル・リポジトリーにユーザー ID wimadmin2 を作成します。
  3. 管理ユーザー・ロール」ページを使用して、ユーザー ID wimadmin2 を WebSphere Application Server 管理者ロールに追加します。
  4. 統合リポジトリー」構成ページを使用して、LDAP リポジトリーおよびベース・エントリーをレルムに追加します。
  5. サーバーを再始動します。
  6. ユーザー ID「wimadmin2」を使用して WebSphere Application Server にログインします。
  7. ユーザーの管理」ページを使用して、ファイル・リポジトリーからユーザー ID wimadmin を削除します。
  8. ログアウトします。
  9. LDAP リポジトリーのユーザー ID wimadmin を使用してログインします。

これで、各リポジトリーに含まれている primaryAdminID は固有の ID になります。



利用条件 | フィードバック