问题:
- 是否存在 Servlet 容器通用的用户和角色概念?
- 如果是这样,是否有一种与容器无关的方式来访问这些用户和角色?
- 如果没有,有没有办法访问 Tomcat Realm 用户和角色?
背景:
我想从 Java webapp 上下文(Servlet 容器)获取所有用户及其角色,或者更好的是,直接查询用户及其角色。
我看到有像 Apache Directory 这样的项目,如果您知道连接字符串,就可以为 LDAP 执行此操作。但是,我想对服务于用户和角色的技术一无所知。
具体来说,我在 Tomcat 上,在最简单的情况下,我想访问 a) tomcat-users.xml
b) 任何其他已配置的 Realm
中的用户和角色在上下文中。但是,我真的在寻找一个不是特定于 Tomcat 的解决方案,它是 Realms
。
最佳答案
在 tomcat(或任何其他 conytainer)中(使用 std.Servlet API),直接访问用户角色是不可能的(不使用 tomcat/第三方特定机制)。 getUserPrincipal 和 isUSerInRole 是这两个方法,不能直接访问角色列表。
由于 API 不提供此类访问权限,我想您将不得不依赖其他特定于容器或技术的机制。
正如您所指出的,如果配置的领域是 JNDI 领域并且领域存储是通过 LDAP 实现的,则可以编写一个 servlet 过滤器并从 LDAP 获取角色并将它们设置在 session 或线程上本地。
关于java - 获取Java webapp中的所有用户和角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644999/