Java 使用OpenSSO客户端SDK获取所有ActiveDirectory组

Java 使用OpenSSO客户端SDK获取所有ActiveDirectory组,java,jboss,opensso,Java,Jboss,Opensso,我希望这里有人有过Sun OpenSSO的经验 我正在尝试使用Java/JBoss EAP 5.0中的OpenSSO客户端SDK获取ActiveDirectory中的所有组 我尝试了以下方法,将各种示例和代码片段结合在一起,我可以在web上找到这些示例和代码片段,但这失败了,最终记录了不允许用户以外的身份的成员身份。基本方法是使用MIDEntityRepository->getRealmIdentity->getMembershipsIdType.GROUP: SSOTokenManager m

我希望这里有人有过Sun OpenSSO的经验

我正在尝试使用Java/JBoss EAP 5.0中的OpenSSO客户端SDK获取ActiveDirectory中的所有组

我尝试了以下方法,将各种示例和代码片段结合在一起,我可以在web上找到这些示例和代码片段,但这失败了,最终记录了不允许用户以外的身份的成员身份。基本方法是使用MIDEntityRepository->getRealmIdentity->getMembershipsIdType.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);
}
注意,我并不是试图确定一个用户是否是一个组的成员或检索一个用户的组,而是试图获取所有组的列表


任何建议将不胜感激-谢谢

不要使用rep.getRealmIdentity然后调用getMembershipsIdType.GROUP,而是使用SearchIdentifies和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());
}