OpenIDConnectでのログアウト後のリダイレクト

Aug 20 2020

SalesforceをOpenIDConnect Provider(OP)として使用してアプリケーションにログインすると、ログインできます。しかし、アプリケーションからログアウトしようとすると、Salesforceからログアウトしてから、Salesforceのログインページにリダイレクトされますhttps://{MY_DOMAIN}.my.salesforce.com/

予想される行動:

のログアウト要求がpost_logout_redirect_uriOPに送信されると、OPは独自のログアウトシーケンスの後にこのURLにリダイレクトする必要があります。

実際の動作:

アプリケーションからログアウトしようとすると、Salesforceドメインにリダイレクトされ、Salesforceに再度ログインするように求められます。

私が試したこと:

ドキュメントに従って、接続されたアプリでシングルログアウトを有効にして、接続されたアプリの構成の値https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/broker/{IDP}/endpoint/logout_responsehttps://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/protocol/openid-connect/logoutしてとの両方を試しSingle Logout URLました。

バックチャネルログアウト方法を使用しようとしましたが、それを使用してSalesforceからログアウトしていないようです。

回答

identigral Aug 20 2020 at 01:22

ご存知のとおり、OpenID Connect Provider(OP)として機能するSFでは、フロントチャネルOIDCシングルログアウト(SLO)のみがサポートされています。これは、の下のOIDCメタデータを介して確認できます/.well-known/openid-configuration

フロントチャネルSLOはOIDCでどのように機能しますか?スペックから:

HTTPベースのログアウトをサポートするOPは、ログインしたRPのセットを追跡して、ログアウトURIでどのRPに接続してログアウトさせるかを把握する必要があります。一部のOPは、「訪問済みサイト」Cookieを使用してこの状態を追跡します。OPは<iframe src="frontchannel_logout_uri">、ログインした各RPのログアウトURIをレンダリングするHTMLタグを使用して動的に構築されたページを使用して、並行してOPに連絡します。

の言及はありませんpost_logout_redirect_uri。(以前はOIDCセッション管理仕様について話してpost_logout_redirect_uriいましたが、最新のドラフトで削除されました)。

参照するヘルプドキュメントに記載されているように、仕様で説明されているフロントチャネルログアウトURIは、Salesforceによって接続されたアプリの[シングルログアウト]フィールドから取得されます。

Salesforceからのログアウト後のリダイレクトの場合、を介して組織レベルでログアウトURLを設定できますSetup => Session Settings => Logout Page Settings => Logout URL。これは、接続されているすべてのアプリに適用されます。この構成設定の値は、要求をさらに調べて適切な後処理ステップを実行できる場所で実行されている独自のカスタムコードに基づくサービスを指している可能性があります。

注意:OIDCセッション管理+ SLO(フロントチャネルとバックチャネルの両方)の仕様はまだドラフトであり、最終的なものではありません。