Skip to main content

Avant de commencer

Pour utiliser Back-Channel Logout, votre application doit respecter les exigences suivantes :
  • Le point de terminaison URI d’OIDC Back-Channel Logout doit être accessible sur Internet afin que votre tenant Auth0 puisse y accéder.
  • Les applications prêtes pour la production doivent utiliser TLS. Pour en savoir plus, consultez Versions TLS (SSL) et algorithmes de chiffrement.
  • L’application doit pouvoir stocker l’identifiant de session (sid) fourni et l’associer aux sessions utilisateur qu’elle crée. Nous recommandons aux applications de production d’utiliser un stockage de session persistant.
  • L’application doit pouvoir récupérer une session existante à l’aide du sid pendant le processus de logout, sans utiliser de cookies côté client. Les cookies se trouvent dans le navigateur et sont inaccessibles au point de terminaison de rappel du logout.

Disponibilité

OIDC Back-Channel Logout est offert à tous les clients du forfait Enterprise. Vérifiez le point de terminaison de métadonnées standard OIDC /.well-known/* pour déterminer si votre application répond aux exigences.

Restrictions liées à Back-Channel Logout

Les URL de Back-Channel Logout sont invoquées sur des endpoints accessibles publiquement et doivent respecter certaines restrictions :
  1. Vous devez utiliser le protocole HTTPS. Le protocole HTTP non chiffré ou tout autre protocole n’est pas autorisé.
  2. Vous ne devez pas utiliser de sous-domaines Auth0. Voici quelques sous-domaines Auth0 :
    • auth0.com
    • auth0app.com
    • webtask.io
    • webtask.run
  3. Nous ne recommandons pas d’utiliser des adresses IP sans nom de domaine. Pour utiliser Back-Channel Logout, les adresses IP doivent être publiques. Les adresses IP provenant de plages internes, réservées ou de bouclage ne sont pas autorisées.

Configurer Auth0

Enregistrez votre application pour recevoir des jetons de déconnexion via ou .

Abonnement des applications

  1. Accédez à Auth0 Dashboard > Applications.
  2. Choisissez l’application que vous voulez enregistrer.
  3. Sélectionnez l’onglet Settings.
  4. Sous OpenID Connect Back-Channel Logout > Back-Channel Logout URI, ajoutez l’URI de déconnexion de l’application qui recevra les logout_tokens
  5. Une fois terminé, sélectionnez Save Changes.
    Auth0 Dashboard > Applications > Settings

Désabonnement des applications

Lorsque vous désabonnez votre application, le service cesse de suivre les nouvelles connexions et d’envoyer des événements de déconnexion. Le service supprime les événements de déconnexion en attente une fois votre application désabonnée.Pour désabonner votre application, supprimez l’URL de déconnexion back-channel.
  1. Accédez à Auth0 Dashboard > Applications.
  2. Choisissez l’application que vous voulez désabonner.
  3. Sélectionnez l’onglet Settings.
  4. Sous OpenID Connect Back-Channel Logout > Back-Channel Logout URI
  5. Supprimez l’URL back-channel.
  6. Une fois terminé, sélectionnez Save Changes.
    Auth0 Dashboard > Applications > Settings
À des fins d’audit, le service consigne toujours l’abonnement ou le désabonnement des URL de déconnexion back-channel sous forme d’API Operation Event dans les journaux du tenant Auth0. Pour en savoir plus, consultez Logs.

Configurez votre application

Une fois que vous avez configuré Back-Channel Logout dans l’Auth0 Dashboard ou au moyen de la Management API, configurez votre application pour utiliser le service en fonction de la technologie ou du framework.
  1. Implémentez l’authentification de l’utilisateur final selon votre type d’application.
    1. Les utilisateurs finaux doivent pouvoir se connecter à l’application, et une session doit être créée.
    2. Un ID token doit être émis par Auth0 et accessible dans le backend de l’application pour un traitement ultérieur.
  2. Étendez le processus de connexion pour enregistrer les claims sid et, facultativement, sub après avoir validé l’ID token.
    1. Ces claims doivent être enregistrés dans la session d’application en cours.
    2. Les fonctions de gestion de session doivent pouvoir récupérer une session précise à partir de la valeur sid.
  3. Configurez le point de terminaison de Back-Channel Logout :
    1. Le point de terminaison ne doit traiter que les requêtes HTTP POST.
    2. Extrayez le paramètre logout_token et validez-le comme un JWT ordinaire conformément à la spécification.
    3. Vérifiez que le token contient un claim d’événements avec une valeur de type objet JSON et un membre nommé http://schemas.openid.net/event/backchannel-logout.
    4. Vérifiez que le token contient les claims sid et/ou sub.
    5. Vérifiez que le token ne contient PAS le claim nonce. Cela est nécessaire pour prévenir les abus en distinguant le Logout Token de l’ID token.
    6. Une fois le token validé, récupérez la session correspondant à la valeur sid et/ou sub reçue, puis terminez-la. Le processus exact de terminaison de la session d’application dépend des détails de la mise en œuvre. Par exemple, il peut être nécessaire de communiquer cet événement au front-end.

Exemple de demande de Back-Channel Logout OIDC

Charge utile du jeton codée :
cURL
Le token expire après 2 minutes (120 sec).
Token payload décodé :
JSON

Réponses attendues

  • HTTP 200:  Confirme la déconnexion de l’utilisateur de l’application en question.
  • HTTP 400: Indique une requête incorrecte. La requête n’est pas comprise ou le jeton n’a pas réussi la validation. Auth0 consigne le problème dans les journaux du tenant, mais ne tente pas d’autres requêtes pour cette session précise.

Résolution des problèmes

L’application n’a pas reçu les événements de déconnexion

Si votre application n’a pas reçu de requête de déconnexion à la suite d’un événement de déconnexion.
  1. Assurez-vous que votre application dispose d’une URL de Back-Channel Logout enregistrée dans Auth0 Dashboard.
  2. Assurez-vous que l’URL de Back-Channel Logout peut être atteinte depuis le tenant Auth0.
  3. Assurez-vous qu’une session valide est établie. L’utilisateur final doit se connecter à cette application au moyen d’Auth0.
    Les applications reçoivent des événements de déconnexion uniquement si les utilisateurs finaux se connectent à cette application avec Auth0. Si l’utilisateur final se connecte à d’autres applications, aucun événement de déconnexion n’est déclenché.
  4. Vérifiez les journaux du tenant Auth0 pour y repérer des messages indiquant un échec de remise du message de déconnexion.
  5. Assurez-vous que la déconnexion est déclenchée par le point de terminaison de déconnexion standard. Les autres événements ne déclenchent pas les événements de déconnexion.
  6. Si possible, vérifiez s’il y a des requêtes bloquées dans les journaux du serveur Web et/ou du pare-feu de l’application.

Je ne trouve pas le journal du tenant d’OIDC Back-Channel Logout

Cette fonctionnalité sera déployée progressivement auprès de tous les tenants à partir du 3 octobre 2023. Il se peut que vous voyiez encore les codes d’événement du journal du tenant sslo pour oidc_backchannel_logout_succeeded ou fslo pour oidc_backchannel_logout_failed.

L’application cliente ne peut pas vérifier le Logout Token reçu

Si la transaction échoue toujours avec une erreur 400 :
  1. Vérifiez si le jeton est un JWT standard encodé en base64. Certains serveurs Web peuvent tronquer les paramètres longs. Pour en savoir plus, consultez Signing Algorithms.
  2. Si possible, capturez un jeton et vérifiez qu’il s’agit bien d’un JWT. Utilisez une source fiable, comme JWT.IO.
  3. Assurez-vous que la fonction de vérification récupère dynamiquement la clé de signature du tenant au moyen de JSON Web Key Sets (JWKS).
    Nous ne recommandons pas de coder en dur une clé statique. Si votre configuration exige qu’une clé statique soit codée en dur, assurez-vous qu’elle contient la clé publique la plus récente du tenant Auth0.

Erreurs de délai d’attente de réponse

Auth0 attendra cinq secondes pour que l’URL de Back-Channel Logout OIDC de l’application réponde. Passé ce délai, il consignera une « Failed demande de Back-Channel Logout OIDC » dans les journaux du tenant, avec une description de réponse vide.

En savoir plus