【发布时间】:2016-12-30 11:09:55
【问题描述】:
我们使用 Apache Shiro 通过我们的活动目录对用户进行身份验证和授权。
使用以下配置对用户和映射组进行身份验证就可以正常工作:
adRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
adRealm.searchBase = "OU=MYORGANIZATION,DC=MYDOMAIN,DC=COM"
adRealm.groupRolesMap = "CN=SOMEREADGROUP":"read","CN=SOMEMODIFYGROUP":"modify","CN=SOMEADMINGROUP":"admin"
adRealm.url = ldaps://my.ad.url:636
adRealm.systemUsername= systemuser
adRealm.systemPassword= secret
adRealm.principalSuffix= @myorganization.mydomain.com
我可以使用以下几行在 Shiro 中进行身份验证:
String user = "someuser";
String password = "somepassword";
Subject currentUser = SecurityUtils.getSubject ();
if (!currentUser.isAuthenticated ()){
UsernamePasswordToken token = new UsernamePasswordToken (user,
password);
token.setRememberMe (true);
currentUser.login (token);
}
我们现在想从我们的 ActiveDirectory 中获取更多用户信息。如何使用 Apache Shiro 做到这一点?我在文档中找不到任何关于它的信息。
在 ActiveDirectoryRealm 的源代码中我发现了这一行:
NamingEnumeration answer = ldapContext.search(searchBase, searchFilter, searchArguments, searchCtls);
所以答案的第一部分很清楚:使用 ldapContext 搜索其中的内容。但是如何检索 LdapContext?
【问题讨论】:
标签: apache active-directory ldap shiro