HTTP

静的リソース (英語) を含むすべての HTTP ベースの通信は、TLS を使用して [OWASP] (英語) 保護する必要があります。

フレームワークとして、Spring Security は HTTP 接続を処理しないため、HTTPS を直接サポートしません。ただし、HTTPS の使用に役立つ多くの機能を提供します。

HTTPS にリダイレクト

クライアントが HTTP を使用する場合、サーブレット環境と WebFlux 環境の両方で HTTPS にリダイレクトするように Spring Security を構成できます。

Strict Transport Security

Spring Security は Strict Transport Security をサポートし、デフォルトで有効にします。

プロキシサーバー構成

プロキシサーバーを使用する場合は、アプリケーションが適切に構成されていることを確認することが重要です。例: 多くのアプリケーションには、https://192.168.0.107 のアプリケーションサーバーにリクエストを転送することで、https://example.com/ のリクエストに応答するロードバランサがあります。適切な設定がないと、アプリケーションサーバーはロードバランサの存在を認識できず、リクエストを https://192.168.0.107:8080 がリクエストされたかのように処理します。クライアント。

これを修正するには、RFC 7239 [IETF] (英語) を使用して、ロードバランサーが使用されていることを指定します。アプリケーションにこれを認識させるには、X-Forwarded ヘッダーを認識するようにアプリケーションサーバーを構成する必要があります。例: Tomcat は RemoteIpValve [Apache] (英語) を使用し、Jetty は ForwardedRequestCustomizer (英語) を使用します。あるいは、Spring ユーザーは、Servlet スタックで ForwardedHeaderFilter を使用するか、Reactive スタックで ForwardedHeaderTransformer を使用できます。

Spring Boot ユーザーは、server.forward-headers-strategy プロパティを使用してアプリケーションを構成できます。詳細については、Spring Boot ドキュメントを参照してください。