java - 如何获取特定用户的所有 LDAP 组?

标签 java ldap weblogic jaas java-ee-5

我有一个 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/

相关文章:

java - 检测手指何时离开屏幕并更新指针

java - 在 Java 中通过引用传递列表

C# 如何向具有多个对象类的 LDAP 添加条目

powershell - 使用DirectorySearcher的Powershell LDAP过滤器

Java 8 到 Java 11 : package com. sun.jndi.ldap 不可见

python - 在python中使用time sleep方法时出错

java - oracle db id列自动生成JPA JSF

java - 如何替换 Android 操作系统的默认日历?

java - Camunda BPM Spring boot 无法在 weblogic 中启动 - 也许是 Jersey 问题

java - 从 Weblogic 读取,写入 ActiveMQ