まず、一歩下がって、これ ( https://johnpfield.wordpress.com/2014/09/10/configuring-ssltls-for-cloud-foundry/ ) は、問題の性質に関する優れたコンテキストを提供します。
重要な段落は
「ここでの脅威モデルは、クラウドへのエントリ ポイントが高可用性で安全なプロキシ サーバーであるということです。トラフィックがその境界を通過すると、信頼できるサブネットになります。実際、Tomcat アプリケーション サーバーが実行されている実際の IP アドレスとポート番号は、クラウドの外部からは見えません。そのポートへの HTTP 要求を取得する唯一の方法は、セキュア プロキシを経由することです。このパターンは、セキュリティ アーキテクチャの実践者の間で確立されたベスト プラクティスです。」</p>
したがって、SSL を完全に使用したくない、または必要としない場合がありますが、Cloud Foundry にデプロイされた Spring Security を使用するときに https リダイレクトの問題を回避する方法を確認するために読んでください。
Cloud Foundry インストールの境界で、ロード バランサー、HAProxy、または SSL を終了する何らかの種類のプロキシを使用します。慣例として、使用しているものはすべて、X-Forwarded-For および X-Forwarded-Proto ヘッダーを設定するように構成する必要があります。リクエスト ヘッダー「X-Forwarded-Proto」には、元のリクエストに応じて値 http または https が含まれます。このヘッダー パラメータを使用して、スタックのさらに下にあるセキュリティの決定を行う必要があります。
これを行う最もクリーンな方法はコンテナー レベルであるため、Spring Security はデプロイ コンテナーとは無関係に同じように動作します。これを構成するためのいくつかの典型的なオプションは次のとおりです
1) トムキャット
ここでうまく説明されているように、TomcatはRemoteIPValveで構成する必要があります
Cloud Foundry 用の Java ビルドパックは、ここに示されているように、すでにこれを行っています。
2) スプリング ブート (組み込み Tomcat)
Tomcat が組み込まれているため、Java ビルドパックの Tomcat 構成はアクティブ化されず (ビルドパックの検出基準を参照)、内部 Spring Boot 構成が必要になります。幸いなことに、Spring Boot で期待されるように構成するのは非常に簡単で、Tomcat の RemoteIPValve を有効にすることができます。
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
どちらのアプローチも、Tomcat バルブが ServletRequest.isSecure() の動作をオーバーライドするという同じ結果につながるため、アプリケーションはプロキシの使用法を認識できません。バルブは、「X-Forwarded-Proto」ヘッダーが設定されている場合にのみ使用されることに注意してください。
または、本当に低レベルに行きたい場合は、ここで示されているように、Spring Security の根幹を掘り下げることができます。その取り組みの一環として、https:// github.com/BroadleafCommerce/BroadleafCommerce/issues/424
追加のメモとして、CloudFlare は SSL を終了するリバース プロキシとしても機能し (これは、ここで説明されている PWS 経由の推奨されるアプローチです) 、関連するヘッダーを実際に転送します。
参考文献
https://stackoverflow.com/a/28300485/752167
http://experts.hybris.com/answers/33612/view.html
https://github.com/cloudfoundry/java-buildpack/commit/540633bc932299ef4335fde16d4069349c66062e
https://support.run.pivotal.io/entries/24898367-Spring-security-with-https
http://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html#howto-use-tomcat-behind-a-proxy-server