覆盖 Jetty 9 中的安全约束

Override security constraint in Jetty 9

我们使用设置为机密的安全约束策略强制从 http 重定向到 https。尽管在本地开发中我们想移除约束。对于 Jetty 7,我们使用 override-web.xml 将传输安全性从 CONFIDENTIAL 重新分配给 NONE。现在,在我们迁移到 Jetty 9 之后,它突然停止了。我怀疑现在使用 Jetty 9 而不是覆盖传输安全性,它会向列表添加约束。

如何在本地环境中将安全约束从 CONFIDENTIAL 覆盖到 NONE?

这是来自 web.xml 的部分:

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

在本地开发中,我们是 运行 jetty with jetty-maven-plugin 并指定 override-web.xml。这是来自 override-web.xml:

的部分
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Some server</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

之前的 Jetty 版本:7.6.10.v20130312
Jetty 版本之后:9.2.18.v20160721

此功能在 Jetty 9 中应该像在 Jetty 7 中一样工作。

您可以从 here

中找到 WebApp configuration 说明

他们在 Jetty 9 中稍微更改了标签,因此在阅读配置时要格外小心。你的 pom.xml:

中应该有这样的东西
<configuration>
<webApp>
<overrideDescriptor>{path_to_your_override_xml}</overrideDescriptor>
</webApp>
</configuration>

例如,标签

<webApp> </webApp>

较早

<webAppConfig> </webAppConfig>

按照 Jetty startup log 并验证是否应用了覆盖:

[INFO] Web overrides = {path_to_your_override_xml}