当应用程序没有web.xml时,如何强制重定向到HTTPS

时间:2014-10-02 18:26:49

标签: java spring servlets openshift

我正在使用Servlet 3.x开发一个Web应用程序,而我没有web.xml,而是使用配置注释。我想将部署在Openshift中的应用程序的所有流量限制为HTTPS。我发现这篇文章是关于如何在Tomcat(Jboss EWS)中完成的。

https://help.openshift.com/hc/en-us/articles/202398810-How-to-redirect-traffic-to-HTTPS-

然而,最后一步涉及我更改我没有的web.xml。当我试图找到替代品时,我可以找到有关Servlet安全性的文章。有人可以帮我解决下面这段代码的翻译吗?

A sample security-constraint directive in repo/src/main/webapp/WEB-INF/web.xml looks like:

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

1 个答案:

答案 0 :(得分:4)

目前无法使用<url-pattern>/*</url-pattern>注释映射@ServletSecurity。它仅适用于@WebServlet

中定义的模式

您可以定义这样的注释:

@ServletSecurity(@HttpConstraint(transportGuarantee = 
TransportGuarantee.CONFIDENTIAL))
@WebServlet(”/SSLServlet”)
public class SSLProtected extends HttpServlet {
}

然而,它只会使SSL要求访问that servlet(/ SSLServlet模式),而不是整个应用程序。您可以为所有servlet定义此类注释,但它比使用web.xml更容易出错。 这就是为什么仍然建议使用web.xml而不是注释来定义安全约束的原因。

只需使用您提供的片段将web.xml添加到应用程序的WEB-INF文件夹中即可。您无法使用web.xml的任何原因?