Configuration de déconnexion du canal d’appui OIDC
Before you start
Pour utiliser la déconnexion du canal d'appui, votre application doit respecter les exigences suivantes :
Votre point de terminaison URI de déconnexion par canal d’appui OIDC doit être exposé sur Internet pour autoriser l’accès de votre locataire Auth0.
Les applications prêtes pour la production doivent utiliser TLS. Pour en savoir plus, lisez Versions et suites cryptographiques TLS (SSL).
L’application doit être capable de stocker l’identifiant de session fourni (
sid
) et l’associer avec les sessions d’utilisateur qu’elle crée. Nous recommandons l’utilisation d’un stockage de session durable pour les applications de production.L’application doit être capable de récupérer une session existante par le
sid
pendant le processus de déconnexion, sans utiliser de témoins côté client. Les témoins sont présents dans le navigateur et ne sont pas accessibles par le point de terminaison de rappel de déconnexion.
Disponibilité
La déconnexion du canal d’appui OIDC est disponible pour tous les clients du plan Enterprise. Vous devez vérifier le point de terminaison de métadonnées /.well-known/*
de la norme OIDC pour déterminer si votre application satisfait aux exigences.
GET https://acme.eu.auth0.com/.well-known/openid-configuration
HTTP 200
{ ..., "backchannel_logout_supported": true,
"backchannel_logout_session_supported": true }
Was this helpful?
Restrictions de la déconnexion du canal d’appui
Les URL de déconnexion du canal d’appui sont appelées sur des points de terminaison exposés au public et doivent respecter certaines restrictions :
Vous devez utiliser les protocoles HTTPS. Les protocoles HTTP non chiffrés ou d’autres protocoles ne sont pas autorisés.
Vous ne devez pas utiliser de sous-domaines Auth0. Voici plusieurs sous-domaines Auth0 :
auth0.com
auth0app.com
webtask.io
webtask.run
Nous ne recommandons pas l’utilisation d’adresses IP sans domaine. Les adresses IP doivent être publiques pour utiliser la déconnexion par canal d’appui. Les adresses IP à portée interne, réservée ou de boucle ne sont pas autorisées.
Configuration d’Auth0
Enregistrez votre application pour recevoir des jetons de déconnexion via Auth0 Dashboard ou Management API.
S’abonner aux applications
Naviguez vers Auth0 Dashboard > Applications.
Choisissez l’application à laquelle vous voulez vous inscrire.
Sélectionnez l’onglet Settings (Paramètres).
Sous Déconnexion par canal d'appui OpenID Connect > URI de déconnexion du canal d'appui, ajoutez l’URI de déconnexion de l’application qui recevra les logout_tokens
Quand vous aurez terminé, sélectionnez Save Changes (Enregistrer les modifications).
Se désabonner des applications
La désinscription de votre application empêche le service de suivre les nouvelles connexions et d’envoyer des événements de déconnexion. Le service rejette les événements de déconnexion en attente une fois que votre application est désinscrite.
Pour désabonner l’application, supprimez l’URL de déconnexion du canal d’appui.
Naviguez vers Auth0 Dashboard > Applications.
Choisissez l’application à laquelle vous voulez vous inscrire.
Sélectionnez l’onglet Settings (Paramètres).
Sous Déconnexion par canal d’appui OpenID Connect > URI de déconnexion du canal d’appui
Retirez l’URL du canal d'appui.
Quand vous aurez terminé, sélectionnez Save Changes (Enregistrer les modifications).
À des fins de vérification, le service consigne toujours les URL de déconnexion par canal d’appui pour les abonnements ou les désabonnements dans les journaux des locataires d’Auth0 comme des événements d’opération d’API
. Pour en apprendre plus, lisez Journaux.
S’abonner à l’application
Ajoutez la propriété oidc_logout
pour effectuer une demande PATCH
pour un client par l’entremise de Management API :
PATCH /api/v2/clients/{id}
"oidc_logout": {
"backchannel_logout_urls": ["http://acme.eu.auth0.com/events"]
}
Was this helpful?
Se désabonner de l’application
Supprimez le paramètre oidc_logout
:
PATCH https://acme.eu.auth0.com/api/v2/clients/{id}
{
"oidc_logout": {
"backchannel_logout_urls": []
}
}
Was this helpful?
Configuration de votre application
Une fois que vous avez configuré la déconnexion par canal d’appui via Auth0 Dashboard ou Management API, configurez votre application pour utiliser le service en fonction de la technologie ou du cadre d'applications.
Implémentez l’authentification de l’utilisateur final en fonction de votre type d’application.
Les utilisateurs finaux doivent pouvoir se connecter à l’application et une session doit être créée.
Un jeton d’ID doit être émis par Auth0 et doit être accessible dans le système dorsal de l’application pour un traitement ultérieur.
Étendez le processus de connexion pour sauvegarder le
sid
et, éventuellement, les sous-demandes après la validation du jeton d’ID.Ces demandes doivent être sauvegardées en fonction de la session d’application en cours.
Les fonctions de gestion de session doivent être en mesure de récupérer une session spécifique à l’aide de la valeur
sid
.
Configurez le point de terminaison de déconnexion du canal d’appui :
Le point de terminaison doit traiter uniquement les requêtes
HTTP POST
.Extrayez le paramètre
logout_token
et validez-le en tant que JWT standard conformément à la spécification.Vérifiez que le jeton contient une demande d’événement avec une valeur d’objet JSON et un membre nommé
http://schemas.openid.net/event/backchannel-logout
.Vérifiez que le jeton contient les demandes
sid
et/ousub
.Vérifiez que le jeton ne contient PAS la demande
nonce
. Cela est nécessaire pour éviter les abus en distinguant le jeton de déconnexion du jeton d’ID.Une fois le jeton validé, récupérez la session correspondant à la valeur
sid
et/ousub
reçue et mettez-y fin. Le processus exact de clôture de la session de l'application dépend des détails de la mise en œuvre. Par exemple, cet événement peut devoir être communiqué au programme frontal.
Exemple de demande de déconnexion par canal d’appui OIDC
Charge utile codée de jeton :
POST /backchannel-logout HTTP/1.1
Host: rp.example.org
Content-Type: application/x-www-form-urlencoded
logout_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdwY3ZFT0FPREE2T3pXRmw3ODVxbCJ9.eyJpc3MiOiJodHRwczovL2FydGV4LWRldi5ldS5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NjAyZTkzZGI4M2ZhNmYwMDc0OWEyM2U2IiwiYXVkIjoiVHVoTkx2N3VsWEQzUmZ5TGxTTWJPdnN6endKSkZQcE8iLCJpYXQiOjE2OTgxNjA5MjgsImV4cCI6MTY5ODE2MTA0OCwianRpIjoiNDRhOTEyMTUtZGZiNC00ZGZlLWExZWItZmNhZmE5MTFkZWJhIiwiZXZlbnRzIjp7Imh0dHA6Ly9zY2hlbWFzLm9wZW5pZC5uZXQvZXZlbnQvYmFja2NoYW5uZWwtbG9nb3V0Ijp7fX0sInRyYWNlX2lkIjoiODFiMzM2YTk0YTRhNTcwNyIsInNpZCI6IjM3NVVJcF9JRDVtQ1RDbEllQkVIcFhmR3dxNTF0Rl9MIn0.aEoAL_U-EPlf3f7Fup-bu7Yv0S0GOnrkL8Njd6j6UNqZcr5VrWWFf3CWvkRi7Cm6wMgU2qIMhb7643ca8-ajR7zHlMu0Z3r-gfd2D1xudKLyUSC3v2D5WJZz5I8xMZ_LWtIN2W3l4SQFO9MgK_7F3x0WIWXo9KPC9tgOaOLPnsiv__MutM1ZakoCsJPddl5gVM4TYtHOue6WM7SOXZNa3SSiv57YQOX2KNCL7sWmZp_J1OXKy8lsgkNFqiOVwu39p4sgjKYEXQU0G-I0yY_aeNbnlnxFG6OuxaDt_zwg6AvKglLSNGqrrvzy4GsYJi5HMGZ1GsSs7rQLg7Iuu6JM-A
Was this helpful?
Charge utile décodée de jeton :
{
"iss": "https://artex-dev.eu.auth0.com/",
"sub": "auth0|602e93db83fa6f00749a23e6",
"aud": "TuhNLv7ulXD3RfyLlSMbOvszzwJJFPpO",
"iat": 1698160928,
"exp": 1698161048,
"jti": "44a91215-dfb4-4dfe-a1eb-fcafa911deba",
"events": {
"http://schemas.openid.net/event/backchannel-logout": {}
},
"trace_id": "81b336a94a4a5707",
"sid": "375UIp_ID5mCTClIeBEHpXfGwq51tF_L"
}
Was this helpful?
Réponses attendues
HTTP 200 : ce protocole confirme la déconnexion de l’utilisateur de l’application spécifique.
HTTP 400 : indique une demande incorrecte. La demande n’est pas comprise ou la validation du jeton a échoué. Auth0 enregistre le problème dans les journaux du locataire mais ne tente pas d’autres demandes pour cette session.
Résoudre les problèmes
L’application n’a pas reçu les événements de déconnexion
Votre application n’a pas reçu de demande de déconnexion après un événement de déconnexion.
Assurez-vous que votre application dispose d’une URL de déconnexion par canal d'appui enregistrée dans Auth0 Dashboard.
Assurez-vous que l’URL de déconnexion par canal d'appui est accessible depuis le locataire Auth0.
Assurez-vous qu’une session valide est établie. L’utilisateur final doit se connecter à votre application spécifique via Auth0.
Vérifiez la présence de messages concernant l'échec de la transmission des messages de déconnexion dans les journaux du locataire Auth0.
Assurez-vous que la déconnexion est déclenchée par le point de terminaison standard de déconnexion. D’autres événements ne déclenchent pas d’événements de déconnexion.
Si possible, vérifiez si des demandes ont été bloquées sur le serveur Web et/ou dans les journaux du pare-feu de l’application.
Confirmez que vous utilisez un certificat valide (non auto-signé) dans le point de terminaison de déconnexion du canal d'appui.
Je ne trouve pas les journaux de locataire pour la déconnexion du canal d’appui OIDC.
Cette fonctionnalité est progressivement mise à disposition de tous les locataires depuis le 3 octobre 2023. Vous pouvez toujours recevoir des codes d’événements de journalisation de locatairesslo
pour oidc_backchannel_logout_succeeded
ou fslo
pour oidc_backchannel_logout_failed
.
L’application client ne peut pas vérifier le jeton de déconnexion reçu
Si la transaction échoue toujours avec une erreur 400 :
Vérifiez si le jeton est un JWT standard codé en base64. Certains serveurs web peuvent tronquer les paramètres longs. Pour en savoir plus, consultez Algorithmes de signature.
Si possible, capturez un jeton et vérifiez qu’il s’agit d’un JWT. Utilisez une source vérifiée, comme JWT.IO.
Assurez-vous que la fonction de vérification récupère la clé de connexion du locataire dynamiquement via les JSON Web Key Sets (ensembles de clés JSON Web) (JWKS).
Erreurs d’expiration de délai de réponse
Auth0 attendra cinq secondes pour que l’URL de déconnexion par canal d'appui OIDC de l’application réponde. Passé ce délai, un « Échec de requête de déconnexion par canal d’appui OIDC » est enregistré dans les journaux du locataire, avec une description de réponse vide.