Java Spring安全性:需要HTTPS时重定向到其他主机

Java Spring安全性:需要HTTPS时重定向到其他主机,java,spring,web-applications,spring-security,mod-jk,Java,Spring,Web Applications,Spring Security,Mod Jk,我有一个关于Spring安全HTTPS重定向策略的问题。 首先,配置: Spring3JavaWeb应用程序 apache连接jk后的tomcat 春季安全3 使用客户端直接连接到tomcat的配置(即no jk),我看到https是通过如下配置security.xml文件使用安全端口重定向进行管理的: <http> <intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https

我有一个关于Spring安全HTTPS重定向策略的问题。 首先,配置:

  • Spring3JavaWeb应用程序
  • apache连接jk后的tomcat
  • 春季安全3
  • 使用客户端直接连接到tomcat的配置(即no jk),我看到https是通过如下配置security.xml文件使用安全端口重定向进行管理的:

    <http>
       <intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https"/>
       ...
    </http>
    
    
    ...
    
    现在,这里有一个问题:在apache之后使用tomcat(使用jk),安全部分位于不同的主机上,因此我有以下内容

    • http(非安全主机):www.myhost.com
    • https(安全主机):ssl.myhost.com
    我想知道,如果需要https,是否可以将spring security配置为重定向到安全主机。 我看到有一个端口映射配置可用,但我没有看到类似的主机配置

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


    PS.双重主机配置由托管服务强制实施。

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


    一旦实现了该类,根据javadoc中给出的示例,使用它配置
    ChannelProcessingFilter

    是否成功实现了这样的重定向到不同主机?不幸的是,我不得不等待一些与我的活动无关的技术延迟。当SSL服务器准备就绪时,我将尝试您的解决方案,并告诉您它是否有效。