0

Sun OpenSSO (現在は ForgeRock OpenAM) の経験がある方をお待ちしています。

Java/JBoss EAP 5.0 で OpenSSO Client SDK を使用して、ActiveDirectory 内のすべてのグループを取得しようとしています。

Web で見つけたさまざまなサンプルとコード スニペットを組み合わせて次のことを試しましたが、これは失敗し、最終的に「ユーザー以外の ID のメンバーシップは許可されていません」とログに記録されます。基本的なアプローチは、 AMIdentityRepository -> getRealmIdentity() -> getMemberships(IdType.GROUP) を使用することでした:

SSOTokenManager manager = SSOTokenManager.getInstance();
String tokenString = URLDecoder.decode(tokenID, "ISO-8859-1");
SSOToken token = manager.createSSOToken(tokenString);
if (manager.isValidToken(token)) {
    SSOToken adminToken = (SSOToken)AccessController.
        doPrivileged(AdminTokenAction.getInstance());
 AMIdentityRepository rep = new AMIdentityRepository(adminToken, "/");
 AMIdentity identity = rep.getRealmIdentity();
 Set groups = identity.getMemberships(IdType.GROUP);
}

ユーザーがグループのメンバーであるかどうかを判断したり、ユーザーのグループを取得したりしようとしているのではなく、すべてのグループのリストを取得しようとしていることに注意してください。

任意の提案をいただければ幸いです - ありがとう!

4

1 に答える 1

0

rep.getRealmIdentity() を呼び出してから getMemberships(IdType.GROUP) を呼び出す代わりに、次のように searchIdentities と getSearchResults を使用します。

SSOToken token = (SSOToken) AccessController.doPrivileged(AdminTokenAction.getInstance());
AMIdentityRepository ir = new AMIdentityRepository(token, "/");
IdSearchResults results = ir.searchIdentities(IdType.GROUP, "*", new IdSearchControl());
Set<AMIdentity> groups = results.getSearchResults();    
for (AMIdentity group : groups) {
    logger.debug("Group Name : " + group.getName());
}
于 2010-07-13T13:06:44.690 に答える