2

在EC2實例上運行Spring引導應用程序端口8080。帶有嵌入式Tomcat的Spring Boot在AWS ELB之後 - HTTPS重定向

AWS ELB配置爲重定向

 80 -> 8080 
    443 (SSL termination happens here) -> 8080 

應用使用Spring的安全,如果你的用戶到達http://example.com它會重定向到。我想登錄頁面來使用SSL。

春季安全片段:

http.requiresChannel().antMatchers("/login", "/logout").requiresSecure(); 

我們正在運行到重定向循環這是有道理的。

春天啓動應用程序,它看起來像所有的請求都作出非安全端口8080,它重定向到https://example.com,經過ELB,並再次獲得8080

有關如何使用AWS ELB運行任何想法請求???

回答

2

您將必須instantiate your own EmbeddedServletContainerFactory並將此容器的連接器上的secure屬性設置爲true。之後,您的Ant匹配器規則將起作用。

或者,你可以檢查出在Github上可用的Spring Boot source code,添加代碼讀取稱爲server.channel.secure布爾值的配置屬性,將其設置嵌入式的Tomcat連接器上,並提交了Spring團隊將其納入下一個版本pull請求。

+0

感謝您指出了安全性能..貌似很簡單的方法來設置它。我上面發佈了答案。 – vladsfl

3

看起來這並獲得成功:

@Component 
public class TomcatCustomizer implements EmbeddedServletContainerCustomizer { 

@Override 
public void customize(ConfigurableEmbeddedServletContainer container) { 
    TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container; 
    tomcat.addConnectorCustomizers(new TomcatConnectorCustomizer() { 
     @Override 
     public void customize(Connector connector) { 
      connector.setSecure(true); 
     } 
    }); 

} 

}

相關問題