使用webapp的web.xml重定向到SSL以获取登录页面

时间:2012-10-17 01:57:22

标签: redirect ssl tomcat7 web.xml

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

这可以在不将登录页面移动到其自己的目录(如this question)中吗?

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>

我尝试了许多不同的配置(例如添加/等其他网址模式),但是当我转到网络应用的根目录时,无法获得任何重定向。我真的很感激知道这是不可能的,还是我只是做错了什么。感谢。

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的另一部分冲突,但仍然无法正常工作。我的想法很简单。

2 个答案:

答案 0 :(得分: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>

E.g。有3页允许登录,以及standalone.xml中的SSL配置,这会强制SSL用于登录页面和会话,但不会对其他内容施加约束。这是为了解决IE8及其早期的一种奇怪问题,如果我们将约束放在所有内容上,则禁用活动内容(热点)。

答案 1 :(得分: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>