gpt4 book ai didi

ssl - Spring 安全 : requires-channel ="https" behind SSL accelerator

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:28 24 4
gpt4 key购买 nike

我们使用 F5 BIG-IP 设备来终止 SSL 连接,并通过普通 HTTP 连接到具有启用 spring 的应用程序的应用程序服务器。我们还配置了 F5 以发送一个 X-Forwarded-Proto header ,其中包含 http 或 https 作为值。

现在我们想通过配置拦截 url 来强制执行 HTTPS:

<security:intercept-url pattern="/login.action" requires-channel="https" />

但这仅在 servlet 容器中的协议(protocol)方案为 HTTPS 时有效,因此我们需要解释 HTTP header 。

知道怎么做吗?

谢谢西蒙

最佳答案

子类 SecureChannelProcessorInsecureChannelProcessor重写 decide()。您需要复制并粘贴一些代码,例如用于 Secure 的代码:

    @Override
public void decide(FilterInvocation invocation, Collection<ConfigAttribute> config) throws IOException, ServletException {
Assert.isTrue((invocation != null) && (config != null),
"Nulls cannot be provided");

for (ConfigAttribute attribute : config) {
if (supports(attribute)) {
if (invocation.getHttpRequest().
getHeader("X-Forwarded-Proto").equals("http")) {
entryPoint.commence(invocation.getRequest(),
invocation.getResponse());
}
}
}
}

然后在 ChannelDecisionManagerImpl 上设置这些 ChannelProcessor bean 使用 BeanPostProcessor。

关于ssl - Spring 安全 : requires-channel ="https" behind SSL accelerator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com