gpt4 book ai didi

java - Spring 安全: redirect to a different host when HTTPS is required

转载 作者:行者123 更新时间:2023-12-01 14:50:49 25 4
gpt4 key购买 nike

我对 Spring Security HTTPS 重定向策略有疑问。首先是配置:

  1. Spring 3 Java Web 应用
  2. apache与jk连接后的tomcat
  3. Spring 安全 3

使用客户端直接连接到 tomcat 的配置(即无 jk),我发现 https 是通过配置 security.xml 文件使用安全端口重定向来管理的,如下所示:

<http>
<intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https"/>
...
</http>

现在,问题是:在apache(使用jk)之后使用tomcat,安全部分位于不同的主机上,因此我有以下内容

  • http(非安全主机):www.myhost.com
  • https(安全主机):ssl.myhost.com

我想知道是否可以配置 Spring Security 以在需要 https 的情况下重定向到安全主机。我看到有一个端口映射配置可用,但我没有看到主机有类似的东西。

<http>
...
<port-mappings>
<port-mapping http="9080" https="9443"/>
</port-mappings>
</http>

提前致谢。

PS。双重主机配置由托管服务强加。

最佳答案

默认行为的实现是简单重定向到带有 https 前缀的同一 URI,这是在由 SecureChannelProcessor 调用的 RetryWithHttpsEntryPoint 中完成的。您可以通过编写自定义 AbstractRetryEntryPoint 轻松实现所需的行为,该行为不仅会更改协议(protocol),还会更改主机名。

一旦您实现了该类,就可以根据其 javadoc 中给出的示例来配置 ChannelProcessingFilter:http://static.springsource.org/spring-security/site/docs/3.1.3/apidocs/org/springframework/security/web/access/channel/ChannelProcessingFilter.html

关于java - Spring 安全: redirect to a different host when HTTPS is required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14876973/

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