0

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

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

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

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

现在,问题来了:在 apache (with 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。双重主机配置是由托管服务强加的。

4

1 回答 1

1

默认行为的实现是一个简单的重定向到具有 https 前缀的相同 URI,这是RetryWithHttpsEntryPointSecureChannelProcessor. 您可以通过编写AbstractRetryEntryPoint不仅更改协议而且更改主机名的自定义来轻松实现所需的行为。

实现该类后ChannelProcessingFilter,根据其 javadoc 中给出的示例对其进行配置:http: //static.springsource.org/spring-security/site/docs/3.1.3/apidocs/org/springframework/安全/web/access/channel/ChannelProcessingFilter.html

于 2013-02-14T14:53:30.090 回答