アプリ統合でシングルログアウトを構成する

シングルログアウト(SLO)とは、エンドユーザーが1回の操作でOktaセッションと構成済みアプリの両方からサインアウトできるようにするフェデレーション認証の機能です。

Oktaでは、サービスプロバイダー(SP)がこのサインアウトプロセスを開始した場合にのみ、シングルサインアウトがサポートされます。SPがOktaにSLOリクエストを送信すると、Oktaセッションが終了します。

  • SWAアプリはSLOをサポートしません。
  • すべてのアプリの統合がSLOをサポートしているわけではありません。SPがダウンストリームアプリでSLOをサポートしている場合、アプリの構成ガイドにサポート対象の機能として記載されます。SLOに対応するようリクエストを出す場合は、直接SPにお問い合わせください。

SAML統合でSLOを有効化する

早期アクセスのフロントチャネルSLOを有効にした場合、この構成は異なります。「SAML統合でSLOを有効化する(フロントチャネルオプションを使用)」を参照してください。

SAMLアプリでは、SPがSLOリクエストをOktaに送信できる必要があり、リクエストが署名されている必要があります。

SLOの構成には、SAMLアプリケーション統合ウィザードを利用できます。

  1. Admin Console[Applications(アプリケーション)][Applications(アプリケーション)]に移動します。
  2. SLOを追加するSAMLアプリをクリックします。
  3. [General(一般)]設定タブの[SAML Settings(SAML設定)]パネルで、[Edit(編集)]をクリックします。
  4. SAML構成ウィザードで、[Next(次へ)]をクリックします。
  5. [Configure SAML(SAMLを構成)]ページで、[Show Advanced Settings(詳細設定を表示)]をクリックします。
  6. [Allow application to initiate Single Logout(アプリケーションによるシングルログアウトの開始を許可)]を選択します。
  7. [Single Logout URL(シングルログアウトURL)]:SLOが返すためのURL。これは(POST操作で)Oktaからのサインアウト応答の送信先となるサービスプロバイダーのURLです。SP側でSLO用のURLを指定していない場合は、SPのメインURLを使用できます。
  8. [SP Issuer(SP発行者)]:アプリの識別子。ACS URLかSPエンティティIDです。SPアプリからSLOリクエストで送信されるメタデータの中にもこの値が含まれます。
  9. [Signature Certificate(署名証明書)]:OktaではSLOリクエストにデジタル署名が必要です。署名証明書のコピーまたはSPがSLOリクエストへの署名に使用しているCAのどちらかをアップロードする必要があります。
  10. [Next(次へ)]をクリックします。
  11. [Finish(終了)]をクリックします。

最後に、SPアプリで必要になるSLOの情報を取得する必要があります。

  1. [Sign On(サインオン)]設定タブの[View SAML setup instructions(SAMLの設定手順を表示)]をクリックします。
  2. ここで表示されるページから、[Identity Provider Single Logout URL(IDプロバイダーのシングルログアウトURL)]を確認できます。このURLをコピーし、SPアプリに戻って構成設定に追加します。
  3. SLOのフローをテストするには、Okta統合を利用してSPアプリにサインインし、SPアプリ内で該当のサインアウト方法を実行します。これにより、ブラウザー上でSPアプリとOktaの両方からサインアウトが行われます。

SAML統合でSLOを有効化する(フロントチャネルオプションを使用)

早期アクセスリリース。「セルフサービス機能を有効にする」を参照してください。

SAML SLO構成には2つのオプションがあります。

  • [User is logged out of other participating apps and Okta(ユーザーは、他の参加しているアプリとOktaからログアウトされます)]:SPアプリは、OktaとSLOをサポートするその他のオープンアプリからログアウトできます。

  • [User logs out of other logout-initiating apps or Okta(ユーザーが別のログアウト開始アプリまたはOktaからログアウトします)]:別のオープンアプリがフロントチャネルHTTPリクエストを使ってSLOを開始したときに、SPアプリを自動的にログアウトさせることができます。

    フロントチャネルSLOトランザクションに関与するアプリが多すぎると、NGINXなどのサーバーソフトウェアが設定したレスポンスヘッダー制限を超過する可能性があります。このような場合は、可能であればデフォルトのサーバー制限を更新するか、フロントチャネルSLOが構成されているアプリケーションの数を減らす必要があるかもしれません。Oktaナレッジベースを参照してください。

    詳細については、「シングルログアウトを構成する」を参照してください。

SAMLアプリケーション統合ウィザードでは、一方または両方のオプションを選択できます。

  1. Admin Console[Applications(アプリケーション)][Applications(アプリケーション)]に移動します。
  2. SLOを追加するSAMLアプリをクリックします。
  3. [General(一般)]設定タブの[SAML Settings(SAML設定)]パネルで、[Edit(編集)]をクリックします。
  4. SAML構成ウィザードで、[Next(次へ)]をクリックします。
  5. [Signature Certificate(署名証明書)]が表示されないときは、[Browse files(ファイルを参照)]をクリックして証明書をアップロードします。
  6. ログアウトセクションで、一方または両方のオプションを選択します:
    • [User is logged out of other participating apps and Okta(ユーザーは、他の参加しているアプリとOktaからログアウトされます)]:アプリがサインアウトのアクションを開始した場合、ユーザーはすべてのシングルログアウトアプリとOktaからサインアウトされます。
      • [Response URL(レスポンスURL)]:Oktaからのシングルログアウト応答を受信するURLを入力します。
      • [SP Issuer(SP発行者)]:アプリのサービスプロバイダーの識別子を入力します。ACS URLかSPエンティティIDです。SPアプリからSLOリクエストで送信されるメタデータの中にもこの値が含まれます。
    • [User logs out of other logout-initiating apps or Okta(ユーザーが別のログアウト開始アプリまたはOktaからログアウトします)]:ユーザーがシングルログアウトアプリまたはOktaからサインアウトすると、ユーザーはすべてのシングルログアウトアプリとOktaからサインアウトされます。
      • [Logout request URL(ログアウトリクエストのURL)]:Oktaがログアウト要求を送信するURLを入力します。
      • [Request binding(リクエストのバインディング)]:ログアウト要求のURLのバインディングタイプを選択します。
      • [User session details(ユーザーセッションの詳細)]:すべてのアクティブユーザーセッションではなく、特定のユーザーセッションを終了するには、[Include user session details(ユーザーセッションの詳細を含める)]を選択します。
  7. [Next(次へ)]をクリックします。
  8. [Finish(終了)]をクリックします。

最後に、SPアプリが必要とするSLO IdPの詳細を取得する必要があります。[Sign On(サインオン)]設定タブの[View SAML setup instructions(SAMLの設定手順を表示)]をクリックします。

  • [User is logged out of other participating apps and Okta(ユーザーは、他の参加しているアプリとOktaからログアウトされます)]を構成した場合は、[Identity Provider Single Logout URL(IDプロバイダーシングルログアウトURL)]をコピーします。
  • [User logs out of other logout-initiating apps or Okta(ユーザーが別のログアウト開始アプリまたはOktaからログアウトします)]を構成した場合は、[Identity Provider Single Logout Callback URL(IDプロバイダーシングルログアウトコールバックURL)]をコピーします。

URLは、SAML 2.0セクションの[More details(詳細)]の下にある[Sign On(サインオン)]タブのアプリ構成で確認できます。

OIDC統合でSLOを有効にする

OpenID Connect(OIDC)統合の場合は、SLOリクエストをGETリクエストとしてOktaに送信するようにSPアプリを構成する必要があります。この設定により、アプリはOktaエンドポイントにリダイレクトされます。

GET https://{baseUrl}/logout?id_token_hint=${id_token}&post_logout_redirect_uri=${post_logout_redirect_uri}&state=${state}

ここで

  • baseURLはOkta orgのURLです。
  • id_tokenはサインオン時にOktaによって発行されるOIDCトークンです。
  • 任意。post_logout_redirect_uriログアウトリダイレクトURIです。SLO操作後にOktaによってユーザーがリダイレクトされるURIを示します。このURIは、Okta統合の[General Settings(一般設定)]内にある、[Logout redirect URIs(ログアウトリダイレクトURI)]構成のリストに記載されている必要があります。
  • 任意。stateはSLO URIへのリダイレクト時にパラメーターとして追加する任意の文字列です。

このリクエストが処理されると、id_tokenが無効になり、ユーザーはOktaからサインアウトします。

APIにGETリクエストを送信する方法の詳細については、「OpenID ConnectおよびOAuth 2.0 API」リファレンスを参照してください。

アプリ開発者向けの情報として、開発者ガイドのユーザーのサインアウトの項目で言語固有の手順も提供しています。

最後に、ログアウトリダイレクトURIをOkta統合に追加する必要があります。

  1. Admin Console[Applications(アプリケーション)][Applications(アプリケーション)]に移動します。
  2. SLOを追加するSAMLアプリをクリックします。
  3. [General(一般)]設定タブで、[Edit(編集)]をクリックします。
  4. 任意。ログアウトセクションで、これらのオプションを構成します:

    早期アクセスリリース。「セルフサービス機能を有効にする」を参照してください。

    この機能は、ネイティブアプリではサポートされません。詳細については、「シングルログアウトを構成する」を参照してください。

    フロントチャネルSLOトランザクションに関与するアプリが多すぎると、NGINXなどのサーバーソフトウェアが設定したレスポンスヘッダー制限を超過する可能性があります。このような場合は、可能であればデフォルトのサーバー制限を更新するか、フロントチャネルSLOが構成されているアプリケーションの数を減らす必要があるかもしれません。Oktaナレッジベースを参照してください。

    • [Logout redirect URIs(ログアウトリダイレクトURI)]:アプリがOktaへのログアウト要求で送信できるURIを入力します。[Add URI(URIを追加)]をクリックして別のURIを追加します。
    • [User logs out of other logout-initiating apps or Okta(ユーザーが別のログアウト開始アプリまたはOktaからログアウトする)]:ユーザーがシングルログアウトアプリまたはOktaからサインアウトするとき、すべてのシングルログアウトアプリおよびOktaからユーザーをサインアウトさせます。
      • [Logout request URL(ログアウトリクエストのURL)]:Oktaがログアウト要求を送信するURLを入力します。
      • [Request binding(リクエストのバインディング)]:ログアウト要求のURLのバインディングタイプを選択します。
      • [User session details(ユーザーセッションの詳細)]:すべてのアクティブなユーザーセッションの代わりに特定のユーザーセッションを終了するには、[Include user session details(ユーザーセッションの詳細を含める)]を選択します。
  5. [Save(保存)]をクリックします。
  6. SLOのフローをテストするには、Okta統合を利用してSPアプリにサインインし、SPアプリ内で該当のサインアウト方法を実行します。これにより、ブラウザー上でSPアプリとOktaの両方からサインアウトが行われます。