java - web.xml 中针对没有角色成员资格的经过身份验证的用户的安全约束

标签 java glassfish web.xml jaas

我非常绝望,因为我认为必须有一个简单的解决方案来解决我的问题,但我正在寻找 - 但无济于事。

我在 Glassfish 3.1.1 中使用自定义领域。这个自定义领域(实现 AppservPasswordLoginModuleInterface)从 HTTPS 请求中获取安全 token ,验证安全 token ,然后将用户返回给 Glassfish。

问题是安全 token 不包含任何组,这意味着方法 public String[] getGroupsList() 或自定义领域返回一个空列表(正确,因为安全 token 中没有角色)。

也就是说,我想要一个只有经过验证的用户才能登录的安全约束。我知道我可以在 web.xml 中使用以下约束:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>mywebapp</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>Users</role-name>
  </auth-constraint>
</security-constraint>

但是因为我没有任何组,所以我无法将任何组映射到角色,因此我无法使用带有角色名称的身份验证约束。

在 web.xml 中是否有一种方法可以定义只允许经过身份验证的用户,而忽略他们处于哪个角色,也忽略他们是否处于任何角色。

有几个解决方案我无法实现:

  • 我无法更改底层 LDAP 以包含角色,因为 LDAP 架构和 LDAP 用户映射到安全 token 的方式超出了我们的范围。
  • 我必须使用当前的自定义领域处理程序,我不能用我自己的一个只返回默认组的处理程序替换它。我确实尝试过一次,并且成功了。但是我不能用我自己的自定义领域替换现有的自​​定义领域,因为自定义领域应该是通用的。

但我真的认为 web.xml 中应该有一种方法只是说:忽略所有组和角色,我只想要一个经过身份验证的用户?

如有任何帮助,我们将不胜感激。

最佳答案

相当古老,但对于那些寻找答案的人,您可以使用 * 角色名称:

<auth-constraint>
    <role-name>*</role-name>
</auth-constraint>

This guy设法解决了它。

关于java - web.xml 中针对没有角色成员资格的经过身份验证的用户的安全约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8823369/

相关文章:

java - 使用Hibernate将文件保存在mysql数据库中

java - 了解 Java 中合并排序算法的关键操作计数

java - GlassFish 4 无法部署

java - Websocket 应用程序不在嵌入 glassfish 中运行,而是在独立版本中运行

java - 从 Eclipse 插件编辑 web.xml 的 API?

Java计数器不计数

java - 如何删除字符串中的前10个字符?

java - GlassFish 服务器问题

java - Jersey URL 映射错误

java - 我如何使用/* servlet 映射发送到 WEB-INF?