Spring Security:在需要HTTPS时重定向到其他主机

时间:2013-02-14 14:25:31

标签: java spring web-applications spring-security mod-jk

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

  1. Spring 3 Java Web App
  2. 与jk连接的apache后的tomcat
  3. Spring Security 3
  4. 使用客户端直接连接到tomcat的配置(即没有jk),我看到通过配置security.xml文件使用安全端口重定向来管理https,如下所示:

    <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。 我看到有一个端口映射配置availbale,但我没有看到类似的主机。

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

    提前致谢。

    PS。主机服务强加了双重主机配置。

1 个答案:

答案 0 :(得分:1)

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

一旦您实现了该类,请根据其javadoc中提供的示例配置ChannelProcessingFilterhttp://static.springsource.org/spring-security/site/docs/3.1.3/apidocs/org/springframework/security/web/access/channel/ChannelProcessingFilter.html