【问题标题】:Java Web Application Role Only SecurityJava Web 应用程序仅角色安全
【发布时间】:2013-07-02 11:48:57
【问题描述】:

美好的一天!

我尝试通过 web.xml 中的角色安全性来保护我的 Web 应用程序:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>RESTRICTED</web-resource-name>
        <description>Resources to be placed under security control</description>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>manager</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <description>ACCESS ROLE</description>
    <role-name>manager</role-name>
</security-role>

就我使用 Weblogic 而言,有一个 weblogic-application.xml 包含以下几行:

<security>
    <security-role-assignment>
        <role-name>manager</role-name>
        <principal-name>manager</principal-name>
    </security-role-assignment>
</security>

想法是,如果用户已经通过身份验证(Web SSO),他就有一个角色,应用程序必须为这样的用户提供访问权限。

问题是即使用户具有所需的角色,应用程序也提供了基本的登录表单。

我试过添加这样一行:

<login-config/>

在web.xml中,根据article中的事实,据说这一行公开了所有页面(我认为它会删除登录表单,但保留角色安全性),但事实并非如此工作。

有谁知道如何删除登录表单以保留角色安全性?

更新: 在我的 WebLogic 中有一个手写的身份断言器,用于检查用户的令牌。如果令牌出现,则断言者创建一个主体并让用户进入系统。

一个有趣的事实: 如果我使用 Firefox 浏览器,则没有任何登录表单,但在 Chrome 中,基本登录表单总是在这里......

【问题讨论】:

  • 这个 Web SSO 到底是什么以及该系统创建的会话/身份验证令牌如何与 Weblogic 集成? IOW,Weblogic 如何知道用户是谁以及用户拥有什么角色?您是否为此集成定义了任何 WLS SSPI 提供程序?
  • 实际上,在 Weblogic 中有一个手写的身份断言器,它创建了一个主体。这就是为什么当以前经过身份验证的用户(通过其他系统)想要使用我的应用程序时,我需要从 HttpServletRequest 获取 Principal 对象并进行处理......问题是基本登录表单总是出现,这不是什么我(和用户)想要。我只需要获取主体(用户组)

标签: java web-applications security weblogic11g


【解决方案1】:

好的,最后我找到了一个解决方案,实际上在“使用身份断言进行 Web 应用程序身份验证”部分中的 this article 中进行了描述:我已将这些行添加到 web.xml 中:

    <login-config>
        <auth-method>CLIENT-CERT</auth-method>
    </login-config>

而且成功了。

【讨论】:

    猜你喜欢
    • 2014-09-19
    • 2017-11-19
    • 2012-07-23
    • 2015-10-26
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多