2016-08-17 19 views
1

私は、BluemixにCFアプリケーションとしてプッシュされるSpring起動アプリケーションを持っています。 httpプロトコルで効率的に動作します。しかし、私はhttpsを強制しようとすると、私は502エラーが発生します。Bluemix force HTTPS on Spring起動アプリケーション

は私が持っている:

@Configuration 
class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
     http.requiresChannel().anyRequest().requiresSecure(); 
     //http.csrf().disable(); 
    } 

} 

そして、私は、それらのエントリを持つapplication.propertiesファイルがあります:

server.ssl.key-store = classpath:**.jks 
server.ssl.key-store-password = ******* 
server.ssl.key-password = ****** 

server.tomcat.remote_ip_header=x-forwarded-for 
server.tomcat.protocol_header=x-forwarded-proto 

私はBluemixは、SSLターミネーションを実行することを承知していますが、実際には正しくx-forwarded-protoとx-forwarded-forを設定します。私は12のような解決策を探したが、運がない。

this articleで提案されているように、私はその後、以下の溶液を用いて試みたが、受け取ったリダイレクトループがinsted:

@Bean 
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory(){ 
    return new TomcatEmbeddedServletContainerFactory() { 
     @Override 
     protected void postProcessContext(Context context) { 
      SecurityConstraint securityConstraint = new SecurityConstraint(); 
      securityConstraint.setUserConstraint("CONFIDENTIAL"); 
      SecurityCollection collection = new SecurityCollection(); 
      collection.addPattern("/*"); 
      securityConstraint.addCollection(collection); 
      context.addConstraint(securityConstraint); 
     } 
    }; 
} 

私は私のアプローチには何を逃したのですか?あなたが私に提供するかもしれないヒント/提案の多くのおかげです。

+2

私はTomcatがx-forwardedヘッダーを信頼できるプロキシとして検出していないと推測しています。 server.tomcat.internal-proxies =。*とlogging.level.org.apache.catalina.valves = DEBUGを設定してみてください –

+0

ありがとうございます!それは本当に解決策を見つけるのに役立ちます!完全性のために、Bluemixは既にSSL検証を実行しているので、server.ssl。*部分広告を削除しました。次のように追加しました: 'server.tomcat.internal-proxies =。* server.use-forward-headers = true' Nowそれは魅力のように機能し、HTTPからHTTPSへのリダイレクトも実行します。あなたの助けをもう一度ありがとう – Luca

答えて

1

コミュニティのために、ロブのコメントが答えとして受け入れられるのは良いことです。あなたがむしろ受け入れられていると思われる場合は、自分の答えを追加してください。

x-forwardedヘッダーが信頼できるプロキシとして検出されていません。 server.tomcat.internal-proxies =。*とlogging.level.org.apache.catalina.valves = DEBUGを設定してみてください。

関連する問題