【问题标题】:How to force redirect to HTTPS when application has no web.xml当应用程序没有 web.xml 时如何强制重定向到 HTTPS
【发布时间】:2014-10-02 18:26:49
【问题描述】:

我正在使用 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 安全性的文章。有人可以帮我翻译下面这段代码sn-p吗?

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>

【问题讨论】:

    标签: java spring servlets openshift


    【解决方案1】:

    目前无法使用@ServletSecurity 注释映射&lt;url-pattern&gt;/*&lt;/url-pattern&gt;。它仅适用于@WebServlet 中定义的模式。

    你可以像这样定义注解:

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

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

    只需使用您提供的片段将web.xml 添加到您的应用程序的WEB-INF 文件夹中,您就可以了。有什么理由不能使用web.xml

    【讨论】:

    • 我不使用 web.xml 只是为了采用更新的方式来定义 webapp 配置。如果没有办法通过配置实现强制重定向,我宁愿在 web.xml 上加上那个 sn-p。但是,web.xml 是否可能与注释配置发生冲突?你能举个例子说明如何同时拥有它们吗?
    • @SuChikki 更新并不意味着总是更好;)。真的没有冲突,web.xml 优先,覆盖注解。如何同时使用它们 - 您可以通过@WebServlet、@WebFilter 等配置您的 Web 组件,但通过 web.xml 坚持安全配置(例如登录配置、安全约束)。在部署期间,来自两个来源的信息被合并。
    猜你喜欢
    • 2018-08-21
    • 2012-10-08
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多