2010-06-15 54 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()); 
}