gpt4 book ai didi

java - 为什么我在 web.xml 中列出安全角色,而它们在 jdbcRealm 数据库中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:14 25 4
gpt4 key购买 nike

我在 Glassfish 3 上运行 JavaEE 6 Web 应用程序。我将 JAAS 与 jdbcRealm 和默认主体角色映射结合使用。在我的数据库中,我有用于将用户名映射到其角色的表:

 username | role
----------+-------
john | admin
mary | user

为什么我需要在我的 web.xml 中再次列出这些角色?

<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>

没有 isUserInRole() 总是返回 false

最佳答案

您不需要在 web.xml 中重新定义安全角色。您列出它们以便应用程序服务器知道它们在您的代码中的使用。

当您部署安全应用程序时,应用程序服务器会读取部署描述符以请求有关安全配置的信息。它知道您的应用程序中使用的角色。然后,应用程序可以使用这些角色,并期望应用程序服务器能够将它们映射到用户和组(最终再次解析为用户,因为用户是最安全的构建 block )。

谈到将角色映射到用户,这就是领域的用武之地。它提供映射,因此您知道部署描述符中的角色 X 映射到数据库中的角色 X,而数据库又映射到用户 A 和 B。

话虽如此,jdbcRealm 使用的数据库具有完全相同的角色,因为它们是应用程序服务器需要映射到应用程序中的角色的用户 key 。

您在代码和部署描述符中使用的是一组用户的逻辑名称,这些用户通过 jdbcRealm 提供的映射解析为真实用户。

关于java - 为什么我在 web.xml 中列出安全角色,而它们在 jdbcRealm 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com