我正在使用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>
答案 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
的任何原因?