OpenIDConnectでのログアウト後のリダイレクト
SalesforceをOpenIDConnect Provider(OP)として使用してアプリケーションにログインすると、ログインできます。しかし、アプリケーションからログアウトしようとすると、Salesforceからログアウトしてから、Salesforceのログインページにリダイレクトされますhttps://{MY_DOMAIN}.my.salesforce.com/
。
予想される行動:
のログアウト要求がpost_logout_redirect_uri
OPに送信されると、OPは独自のログアウトシーケンスの後にこのURLにリダイレクトする必要があります。
実際の動作:
アプリケーションからログアウトしようとすると、Salesforceドメインにリダイレクトされ、Salesforceに再度ログインするように求められます。
私が試したこと:
ドキュメントに従って、接続されたアプリでシングルログアウトを有効にして、接続されたアプリの構成の値https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/broker/{IDP}/endpoint/logout_response
とhttps://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/protocol/openid-connect/logout
してとの両方を試しSingle Logout URL
ました。
バックチャネルログアウト方法を使用しようとしましたが、それを使用してSalesforceからログアウトしていないようです。
回答
ご存知のとおり、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(フロントチャネルとバックチャネルの両方)の仕様はまだドラフトであり、最終的なものではありません。