SP対IdPで開始されるSSO

この記事では、2つのフェデレーション・デプロイメント間でSPとIdPによって開始されたSSOの概念、およびこれらの2つのフローの違いについて説明します。

この記事では、フェデレーションSSO中にIdPとSP間で共有されるユーザー状態または戻りURLの概念についても説明します。

この記事では、SAML 2.0プロトコルを使用した例を紹介していますが、他のプロトコルについても同様です。

フェデレーションSSOフロー

トポロジ

一般的なフェデレーション・デプロイメントは、次のエンティティで構成されます。

SPが開始するSSO

SP開始SSOフローは、SPセキュリティ・ドメインから開始されたフェデレーションSSO操作です。SPフェデレーション・サーバーによってフェデレーション認証リクエストが作成され、ユーザーがIdPにリダイレクトされ、メッセージと操作状態を表す短い文字列が表示されます。

動作状態に関するノート: 通常、メッセージで共有される状態は長すぎないようにしてください。リダイレクト・フローが、リダイレクトURLの長さが、ブラウザがURLで処理できる最大長を超える可能性があるためです。したがって、SPが開始されたSSOでは常にSPを使用することをお薦めします。

SP開始SSOフローをトリガーするには、次の2つの方法があります。

リソースへのアクセス

これはフェデレーションSSO操作の最も一般的なフローで、ユーザーは保護されたリソースにアクセスしようとし、実行時にSSOシステムがフェデレーションSSOを介してユーザーを認証する必要があると判断します。

このフローを使用するユースケースは次のとおりです。

フローのステップは次のとおりです。

  1. ユーザーのブラウザが保護されたリソースへのアクセスをリクエスト

  2. SSO Webエージェントはコールをインターセプトし、ユーザーを認証する必要があると判断し、ユーザーのブラウザにリダイレクトを発行します。

  3. ユーザーのブラウザはSSOサーバーにアクセスし、SSO Webエージェントによってリダイレクトされます。

  4. SSOサーバーは、フェデレーションSSOを介してユーザーを認証し、IdPを選択し、SAML 2.0 AuthnRequestメッセージを作成して、操作状態をSSOサーバー・ストアに保存し、SAMLメッセージとSPの操作状態を参照する文字列を使用して、ユーザーのブラウザをIdPにリダイレクトすることを決定します

  5. ユーザーのブラウザは、AuthnRequestメッセージを使用してIdP SAML 2.0サービスにアクセスします。

図Accessing_Resources_Screen.jpgの説明

IdPがSAML 2.0 AuthnRequestメッセージを受信すると、サーバーはユーザーにチャレンジする必要があるかどうかを判断します(まだ認証されていない、セッションがタイムアウトしました)。ユーザーを識別できた後、フェデレーションSSOフローが再開されます。

  1. IdPは、ユーザー情報および認証データを含むSAML 2.0アサーションを使用してSSOレスポンスを作成し、メッセージおよびRelayStateパラメータを使用してユーザーのブラウザをSPにリダイレクトします

  2. ユーザーのブラウザでは、SPサーバーにSSOレスポンスが表示されます。

  3. SPはSAML 2.0アサーションを検証し、ユーザーのSSOセッションを作成します。SSOサーバーは、ユーザーのブラウザを最初にリクエストされたリソースにリダイレクトします

  4. ユーザーのブラウザがリソースへのアクセスをリクエストします。今回は、SSO Webエージェントがリソースへのアクセス権を付与します

  5. Webアプリケーションは、ユーザーのブラウザに応答を返します。

図Accessing_Resources_Response_Screen.jpgの説明

前述のように、フェデレーションSSOは実行時にSSOサーバーによってのみトリガーされるため、このフローが最も一般的に使用されます。SPセキュリティ・ドメイン内の他のコンポーネントはフェデレーションを認識する必要がありません。

フェデレーションSPサービスの呼び出し

このフローは広く使用されていません。SPサーバー上のサービスにアクセスしてフェデレーションSSOをSPで開始し、ユーザーがすでに持つことができる既存の有効なセッションを無視することを意味するためです。そのため、次のものに対するパフォーマンスへの影響が発生するため、これは避ける必要があります。

このフローを使用するユースケースは次のとおりです。

このフローを使用するユースケースには、次のステップが含まれます。

  1. ユーザーのブラウザはSPにアクセスし、オプションで次を指定してフェデレーションSSOフローを開始します。

    1. フェデレーションSSOの完了後にユーザーのブラウザをリダイレクトするURL

    2. 使用するIdP

  2. SSOサーバーは、指定されていない場合はIdPを選択し、指定されていない場合はデフォルトの戻りURLを選択し、SAML 2.0 AuthnRequestメッセージを作成して、操作状態をSSOサーバー・ストアに保存し、SAMLメッセージおよびSPの操作状態を参照する文字列を使用して、ユーザーのブラウザをIdPにリダイレクトします

  3. ユーザーのブラウザは、AuthnRequestメッセージを使用してIdP SAML 2.0サービスにアクセスします。

図IdP_Service_with_AuthnRequest_Screen.jpgの説明

IdPがSAML 2.0 AuthnRequestメッセージを受信すると、サーバーはユーザーにチャレンジする必要があるかどうかを判断します(まだ認証されていない、セッションがタイムアウトしました)。ユーザーの識別が可能になると、フェデレーションSSOフローが再開されます。

  1. IdPは、ユーザー情報および認証データを含むSAML 2.0アサーションを使用してSSOレスポンスを作成し、メッセージおよびRelayStateパラメータを使用してユーザーのブラウザをSPにリダイレクトします

  2. ユーザーのブラウザでは、SPサーバーにSSOレスポンスが表示されます。

  3. SPはSAML 2.0アサーションを検証し、ユーザーのSSOセッションを作成します。SSOサーバーは、ユーザーのブラウザを最初にリクエストされたリソースにリダイレクトします

  4. ユーザーのブラウザがリソースへのアクセスをリクエストします。今回は、SSO Webエージェントがリソースへのアクセス権を付与します

  5. Webアプリケーションは、ユーザーのブラウザに応答を返します。

図IdP_Service_with_Response_Screen.jpgの説明

フェデレーションSSOは、ユーザーがすでに有効なSSOセッションを持っている場合でも静的にトリガーされるため、このフローはほとんど使用しないでください。また、SPセキュリティードメインの一部のコンポーネントがSPサービスを認識していることも意味します。

IdP開始されたSSO

IdPによって開始されるSSOフローは、IdPセキュリティ・ドメインから開始されたフェデレーションSSO操作で、IdPフェデレーション・サーバーによってフェデレーションSSOレスポンスが作成され、レスポンス・メッセージおよびオプションの操作状態を使用してユーザーがSPにリダイレクトされます:

前の項で説明したように、メッセージで共有される状態は長すぎないようにしてください。リダイレクトURLの長さがURLに対してブラウザで処理できる最大長を超えると、リダイレクト・フローが中断される可能性があるためです。

このフローは、SPがホストするリソースにIdPユーザーがアクセスする必要がある場合に一般的に使用されますが、フェデレーションSSOの最適なアプローチではありません。これは、ユーザーがすでに持つことができるSPの既存の有効なセッションを無視するためです。そのため、次のものに対するパフォーマンスへの影響が発生するため、これは避ける必要があります。

このフローを使用するユースケースは次のとおりです。

このフローを使用するユースケースには、次のステップが含まれます。

  1. ユーザーのブラウザはIdPにアクセスし、次を指定してフェデレーションSSOフローを開始します

    1. 使用するSP

    2. オプションで、フェデレーションSSOの完了後にユーザーのブラウザをリダイレクトするURL

  2. ユーザーを識別した後、IdPは、ユーザー情報および認証データを含むSAML 2.0アサーションを使用してSSOレスポンスを作成し、メッセージおよびRelayStateパラメータを使用してユーザーのブラウザをSPにリダイレクトします

  3. ユーザーのブラウザでは、SPサーバーにSSOレスポンスが表示されます。

  4. SPはSAML 2.0アサーションを検証し、ユーザーのSSOセッションを作成します。SSOサーバーは、ユーザーのブラウザを最初にリクエストされたリソースにリダイレクトします

  5. ユーザーのブラウザがリソースへのアクセスをリクエストします。今回は、SSO Webエージェントがリソースへのアクセス権を付与します

  6. Webアプリケーションは、ユーザーのブラウザに応答を返します。

図SSO_Response_Screen.jpgの説明

まとめ

様々なフローで見られるように、フェデレーション・デプロイメントの最適なアプローチは、フェデレーションSSOがSSOサーバーで必要であるとみなされる実行時に、フェデレーションSSOがSSOサーバーによってトリガーされるようにすることです。その他のケースでは、静的なアプローチがあり、必要でない場合でも常にフェデレーションSSOフローが実行され(たとえば、ユーザーがすでに有効なセッションがある場合)、不要なフェデレーション操作の実行が影響を受けます。

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。