私は、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を設定します。私は1と2のような解決策を探したが、運がない。
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);
}
};
}
私は私のアプローチには何を逃したのですか?あなたが私に提供するかもしれないヒント/提案の多くのおかげです。
私はTomcatがx-forwardedヘッダーを信頼できるプロキシとして検出していないと推測しています。 server.tomcat.internal-proxies =。*とlogging.level.org.apache.catalina.valves = DEBUGを設定してみてください –
ありがとうございます!それは本当に解決策を見つけるのに役立ちます!完全性のために、Bluemixは既にSSL検証を実行しているので、server.ssl。*部分広告を削除しました。次のように追加しました: 'server.tomcat.internal-proxies =。* server.use-forward-headers = true' Nowそれは魅力のように機能し、HTTPからHTTPSへのリダイレクトも実行します。あなたの助けをもう一度ありがとう – Luca