2010-06-15 78 views
0

我希望这里有人有Sun OpenSSO(现在是ForgeRock OpenAM)的经验。使用OpenSSO客户端SDK获取所有ActiveDirectory组

我想在Java/JBoss EAP 5.0中使用OpenSSO Client SDK获取ActiveDirectory中的所有组。

我试着通过结合我可以在网上找到的各种示例和代码片段来尝试以下方法,但是这种方式失败并最终记录“会员身份不允许使用用户身份”。其基本方法是使用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); 
} 

注意我不是试图确定用户是否是一个组的成员,或检索用户的组 - 我试图获得所有组的列表。

任何意见将不胜感激 - 谢谢!

回答

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()); 
} 
相关问题