REST API が、それらと一緒にデプロイされた Web アプリケーションによってのみ呼び出される場合 (単一の戦争で、したがって同じ HTTP セッションを共有する)、Spring SAML + Spring Security を使用してそれらを保護できます。
Spring SAML は、リモート IDP に対してユーザーを認証し、資格 (許可された権限) を入力するために使用されます。その後、Spring Security を使用して、UI から呼び出される API のセキュリティ ポリシーを定義できます。
リモート クライアントから REST API を呼び出せるようにしたい場合は、Spring Security OAuth プロジェクトを調べることをお勧めします。これはもはや Web シングル サインオンに関するものではないためです。
すべての SSO ロジックを処理する Spring SAML の中央インストールを作成することができます。もちろん、Spring SAML が認証されたユーザーとその属性に関する情報を他のアプリケーションに中継するメカニズムを実装する必要があります。これは安全な方法で行います。これにアプローチする 1 つの可能な方法 (アプリケーションが同じドメインにデプロイされているため、Cookie を共有できる場合) は次のとおりです。
- Spring SAML での認証後、他のすべてのアプリケーションに表示され、Spring SAML のキーによって署名された、または共有キーを使用して暗号化された共有 Cookie を設定すると、Cookie にはユーザーの属性も含まれている必要があります。
- これは、後でユーザーを正しいアプリケーションにリダイレクトすることが期待されるカスタム AuthenticationSuccessHandler で実行できます (たとえば、いくつかのカスタム ロジックまたはリレー状態に基づいて)。
- ターゲット アプリケーションは、Cookie を検証し (署名を確認するか、共有キーを使用して復号化し、場合によっては他のチェックを実行することにより)、属性を解析し、Cookie のコンテンツに基づいて事前認証された独自のセッションを開始する必要があります。
これはすべて、Spring Security および Spring SAML の標準インターフェースへの実装で実行できます。しかし、これは簡単な作業ではありません。主に、実装にセキュリティ上の脆弱性があると、アプリケーションのセキュリティが損なわれる可能性があることを考慮してください。