我有一个 weblogic 服务器使用外部 LDAP 作为身份验证提供者。 然后我需要恢复特定用户在 LDAP 存储库中关联的组。
登录使用标准的 java 表示法:
<form method="POST" action="j_security_check">
<p>Username: <input type="text" name="j_username"/></p>
<p>Password: <input type="password" name="j_password"/></p>
<input type="submit" value="Login"/>
</form>
登录后,我可以使用以下方法恢复 Princial: <%= request.getUserPrincipal() %>
但我现在需要的是从 LDAP 恢复该主体的所有关联组?可能吗?
[]s
最佳答案
如果不使用 LDAP,可能无法获得所有组的列表。 JAAS API 通常会为您提供一种方法来询问用户是否属于某个组,但不会一次获取所有组。
在不直接访问 LDAP 的情况下,您可以做的最好的事情是
for (String group : allGroups) {
if (request.isUserInRole(group)) {
userGroups.add(group);
}
}
如果您在 session 创建时执行一次,然后将 userGroups 设置为 session 范围,那么性能损失应该不会太差。 (容器很可能会在登录时获取所有组。)
关于java - 如何获取特定用户的所有 LDAP 组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948240/