0

我有一个在 Tomcat 7 上运行的 Web 应用程序,并且通过直接使用 https 和适当的端口,我已经成功地获得了 SSL 和基于表单的身份验证。但是,我希望登录页面需要 SSL,如果我导航到我的 Web 应用程序的根目录,它似乎无法正常工作。例如,如果我转到http://localhost:8080/ProjectManagementSystem/login.html它会重定向到 SSL,但如果我转到http://localhost:8080/ProjectManagementSystem则不会,后者会重定向到登录页面,但不会更改为 SSL。

如果不将登录页面移动到它自己的目录(如在这个问题中),这是否可能?

web.xml 中的相关部分是:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>PMS</web-resource-name>
        <url-pattern>/login.html</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<login-config>
        <auth-method>FORM</auth-method>
        <realm-name>ProjectManagementSystem</realm-name>
        <form-login-config>
                <form-login-page>/login.html</form-login-page>
                <form-error-page>/error.html</form-error-page>
        </form-login-config>
</login-config>

我尝试了许多不同的配置(例如添加额外的 url 模式,如 /),但是当我转到 web 应用程序的根目录时,无法重定向任何内容。我真的很感激知道这是不可能的,或者我只是做错了什么。谢谢。

ETA:我实际上继续尝试将 login.html 移动到 login/login.html 并将其更改为<url-pattern>/login/*</url-pattern>,但它仍然无法正常工作。所以我想我一定做错了什么,但我一辈子都想不通是什么。

ETA2:我也尝试过,<url-pattern>/*</url-pattern>但这些都没有奏效......<url-pattern>*</url-pattern><url-pattern>*.html</url-pattern>

ETA3:我也尝试更改 web-resource-name,以防它与 web.xml 的另一部分冲突,但这仍然不起作用。我快没主意了。

4

2 回答 2

4

我让它在 JBOSS 7.1.1 中工作,如下所示:

 <security-constraint>
     <web-resource-collection>
         <web-resource-name>*</web-resource-name>
         <url-pattern>/logon.jsp</url-pattern>
         <url-pattern>/logonReconnect.jsp</url-pattern>
         <url-pattern>/logoff.do</url-pattern>
     </web-resource-collection>
    <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>

例如,有 3 个页面允许登录,加上standalone.xml 中的 SSL 配置,这会强制登录页面和会话使用 SSL,但不会对其他内容施加限制。这是为了解决 IE8 和更早版本中的一种奇怪问题,如果我们对所有内容设置约束,活动内容(热点)将被禁用。

于 2012-12-11T08:16:26.540 回答
0

我有同样的问题:只有根页面没有重定向到 https,所有其他页面都这样做了。我设法通过在安全约束中使用两个 url 模式来修复它,比如

<security-constraint> <web-resource-collection> <web-resource-name>PMS</web-resource-name> <url-pattern>*.xhtml</url-pattern> <url-pattern>/</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

于 2014-03-20T13:25:19.780 回答