【问题标题】:Security constraint in web.xml for authenticated users without role membershipsweb.xml 中针对没有角色成员身份的经过身份验证的用户的安全约束
【发布时间】:2012-02-08 01:13:10
【问题描述】:

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

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

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

也就是说,我想要一个只有经过验证的用户才能登录的安全约束。我知道我可以在 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 用户映射到安全令牌的方式超出了我们的范围。
  • 我必须使用当前的自定义领域处理程序,我无法将其替换为我自己的一个仅返回默认组的处理程序。我确实尝试过一次,它奏效了。但我不能用我自己的自定义领域替换现有的自​​定义领域,因为自定义领域应该是通用的。

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

任何帮助将不胜感激。

【问题讨论】:

    标签: java glassfish web.xml jaas


    【解决方案1】:

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

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

    This guy 设法解决了。

    【讨论】:

    • 适用于 WF10.1.0。不要忘记在 中也设置一个 * (否则,如果 * 仅在 中,这不起作用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2020-01-13
    • 2012-04-10
    相关资源
    最近更新 更多