Redirection post-déconnexion dans OpenID Connect

Aug 20 2020

Lorsque je me connecte à mon application avec Salesforce en tant que fournisseur OpenID Connect (OP), je peux le faire. Mais, lorsque j'essaie de me déconnecter de mon application, je suis déconnecté de Salesforce, puis redirigé vers ma page de connexion Salesforce https://{MY_DOMAIN}.my.salesforce.com/.

Comportement attendu:

Lorsqu'une demande de déconnexion post_logout_redirect_uriest envoyée à OP, l'OP doit rediriger vers cette URL après sa propre séquence de déconnexion.

Comportement réel :

Lorsque j'essaie de me déconnecter de l'application, je suis redirigé vers mon domaine Salesforce et invité à me reconnecter à Salesforce.

Ce que j'ai essayé :

Selon Documentation , j'ai activé la déconnexion unique sur l'application connectée en essayant à la fois https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/broker/{IDP}/endpoint/logout_responseet https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/protocol/openid-connect/logoutcomme Single Logout URLvaleur dans la configuration de l'application connectée.

J'ai essayé d'utiliser la méthode de déconnexion du canal arrière, mais il ne semble pas se déconnecter de Salesforce à l'aide de cela.

Réponses

identigral Aug 20 2020 at 01:22

Comme vous l'avez découvert, seule la déconnexion unique (SLO) OIDC du canal frontal est prise en charge par SF agissant en tant que fournisseur OpenID Connect (OP). Ceci est/peut être confirmé via les métadonnées OIDC sous /.well-known/openid-configuration.

Comment fonctionne le SLO du canal frontal dans OIDC ? De la spécification :

Les OP prenant en charge la déconnexion basée sur HTTP doivent garder une trace de l'ensemble des RP connectés afin qu'ils sachent quels RP contacter au niveau de leurs URI de déconnexion pour les amener à se déconnecter. Certains OP suivent cet état à l'aide d'un cookie "sites visités". Les OP les contactent en parallèle à l'aide d'une page construite dynamiquement avec <iframe src="frontchannel_logout_uri">des balises HTML rendant l'URI de déconnexion de chaque RP connecté

Aucune mention de post_logout_redirect_uri. (La spécification de gestion de session OIDC en parlait post_logout_redirect_uri, mais elle a été supprimée dans la dernière version).

Comme l'indique le document d'aide auquel vous faites référence, l'URI de déconnexion du canal frontal dont parle la spécification est récupérée par Salesforce à partir du champ Déconnexion unique de l'application connectée.

Pour la redirection post-déconnexion depuis Salesforce, vous pouvez configurer une URL de déconnexion au niveau de l'organisation via Setup => Session Settings => Logout Page Settings => Logout URL. Cela s'appliquera à toutes les applications connectées. La valeur de ce paramètre de configuration peut pointer vers un service basé sur votre propre code personnalisé exécuté partout où il peut examiner plus en détail la demande et effectuer les étapes de post-traitement appropriées.

NB : Les spécifications de gestion de session OIDC + SLO (canal avant et arrière) sont encore à l'état de projet et ne sont pas définitives.