【问题标题】:j2ee - User with multiple security rolesj2ee - 具有多个安全角色的用户
【发布时间】:2015-11-13 01:33:21
【问题描述】:

我正在开发一个 Java Servlets webapp,它将使用基于容器的安全性来验证用户身份。现在我的问题是,一个用户可以映射到多个安全角色吗?

例如在我的情况下-:

一个用户可以是一个

  • 老师
  • 协调员(也可以是老师)
  • 管理员(也可以是教师)

现在显然管理员将拥有比教师访问更多功能的权限。那么对于像 Tomcat 这样的容器来说,仅仅基于容器的安全性怎么可能呢?

我也没有使用 Spring Security 或 Apache Shiro 等任何框架。

【问题讨论】:

标签: jakarta-ee user-roles


【解决方案1】:

简而言之 - 用户甚至更好的组 - 可以映射到许多安全角色。 最简单的方法是在 web.xml 中定义安全角色,如下所示:

  <security-role>
    <role-name>teacher</role-name>
  </security-role>
  ....

然后在&lt;security-constraint&gt; 中使用它,您可以在其中指定哪个角色可以访问给定的一组资源。

最后,您需要将这些角色映射到用户,这是特定于服务器的。

您可以在保护 Web 应用程序章节的WebSphere Application Server V7.0 Security Guide 中找到有关安全角色和约束的一些基本信息。

我建议不要使用 Tomcat,而是使用 WebSphere Liberty 和带有 WebSphere Developer Tools 的 Eclipse。它具有用于编辑 web.xml 的漂亮图形界面,因此您将能够轻松定义这些角色和约束。它还具有服务器配置编辑器,您可以在其中使用用户和组配置基本注册表,并在角色和用户之间创建该映射。

如果您需要更多关于如何在 Liberty 中进行设置的信息,您可以查看WebSphere Liberty Profile Guide for Developers

【讨论】:

  • 认证后能否在cookie中存入参数?就像将用户 ID 存储在 cookie 上一样?
  • @Kramer786 验证成功后,用户数据会自动存储在 cookie 或 http 标头中,具体取决于验证方法(表单或基本)。
  • 在基于表单的身份验证的情况下,密码是否也存储在cookie中?
  • @Kramer786 不,密码不存储在 cookie 中,因为它不安全。表单登录后,会话建立,cookie 中的内容是平台特定的。一般来说,登录后,开发者不需要密码,并且通过会话维护身份验证,因此同一会话中的所有请求都经过身份验证。
猜你喜欢
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2021-11-15
  • 1970-01-01
  • 2011-02-12
  • 2019-05-03
相关资源
最近更新 更多