Spring Security SAML 拡張機能を使用してアプリケーションをサービス プロバイダーとして機能させるために、SAML SSO のサポートを実装しました。SP をさまざまな IDP と統合できました。たとえば、 HostA 、 HostB 、および HostCがあり、これらはすべてアプリケーションの異なるインスタンスを持っています。ホストごとに SP メタデータ ファイルを指定し、AssertionConsumerServiceURL にそのホストの URL を設定しました (例:https:HostA.com/myapp/saml/sso )。各メタデータ ファイルを IDP に追加し、それらすべてをテストしたところ、正常に動作しています。
ただし、私のプロジェクトでは、負荷分散用に構成された IBM HTTP Server を使用することで、高可用性もサポートしています。したがって、この場合、HTTP サーバーはホスト (A、B、C) を負荷分散に使用するホストとして構成し、ユーザーはHTTP サーバーの URL (https:httpserver.com/myapp/) を使用してアプリケーションにアクセスします。
1 つの SP メタデータ ファイルを定義し、HTTP サーバーの URL を AssertionConsumerServiceURL ( https://httpserver.com/saml/sso )で指定し、実装を変更して HTTP サーバーを対象とするアサーションを受け入れるようにした場合、結果はどうなりますか?このシナリオの:
- ユーザーは、ユーザーを HostA にディスパッチした HTTPServer にアクセスします (舞台裏)。
- HostA の SP アプリケーションは、認証のために IDP に要求を送信します。
- IDP は、 https ://httpserver.com/saml/sso として応答を httpserver に送り返し ます 。
HTTP サーバーは HostA にリダイレクトし、次のようにします: https://HostA.com/saml/sso
ありがとう。