如何绕过Java EE安全角色

时间:2011-02-10 11:40:51

标签: java java-ee security

以下是我的web.xml

中的示例代码
<security-constraint>
    <display-name>
    change password</display-name>
    <web-resource-collection>
        <web-resource-name>change password</web-resource-name>
        <url-pattern>/ResetPassword.html</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description>Roles which can access landing page</description>
        <role-name>Admin</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint> 

只有具有“Admin”角色的用户才能访问“ResetPassword.html”页面。

有一个Java EE API可以让我们测试当前用户是否有权访问特定角色。

request.isUserInRole( “管理员”);

我的默认用户“DefUser”返回false,因为他没有分配角色,我收到403错误,因为DefUser无法访问“ResetPassword.html”页面。如果我使用DefUser登录,是否可以使request.isUserInRole(“Admin”)返回true?还有其他办法吗?

我确实想使用安全约束。这是可能有像“DefUser”这样的用户的要求之一,该用户应该拥有未分配任何角色的所有页面的权限。

我只想绕过这些安全限制。 “DefUser”有没有办法访问“ResetPassword.html”页面?

http://www.imrantariq.com/blog/

3 个答案:

答案 0 :(得分:4)

无法绕过Java EE安全性。 否则,它将像巧克力茶壶一样有用。

答案 1 :(得分:1)

将应用程序部署到应用程序服务器。 转到应用程序服务器的管理,并将您的DefUser分配给角色Admin。 如果您有其他角色,也可以将DefUser分配给这些角色。

你去吧。无需旁路。

答案 2 :(得分:0)

不确定web.xml,但至少有关于EJB的安全注释,如果我没记错的话,您可以将每个服务配置为可访问:

  • 由任何用户
  • 由任何经过身份验证的用户
  • 由特定角色