Skip to main content
Pour utiliser les fonctionnalités de authentification backchannel initiée par le client (CIBA), vous devez avoir un plan Enterprise ou un module complémentaire approprié. Consultez Auth0 Pricing pour en savoir plus.
authentification backchannel initiée par le client (CIBA) est une spécification qui permet à une application cliente d’initier un processus d’authentification et/ou un sans nécessiter d’interaction directe de l’utilisateur dans l’application d’origine. requête d’autorisation enrichi (RAR) est une extension OAuth 2.0 qui permet aux applications clientes de demander, dans une requête d’autorisation, des permissions plus complexes que les scopes OAuth 2.0 standard. Vous pouvez utiliser CIBA avec RAR pour transmettre des données d’ au dans une requête backchannel. Le paramètre authorization_details contient des renseignements sur la requête que vous pouvez utiliser pour personnaliser l’invite de consentement affichée à l’utilisateur. Vous pouvez autoriser les utilisateurs avec CIBA à l’aide des canaux de notification suivants :

Cas d’utilisation courants

Utilisez RAR avec le CIBA flow pour les cas d’utilisation qui exigent un contrôle plus fin de l’accès aux ressources. Parmi les cas d’utilisation courants :
  1. Une application de paiement invite l’utilisateur à confirmer un transfert d’argent. Les authorization_details peuvent être personnalisés pour afficher les détails de la transaction.
  2. Un agent d’IA présente à l’utilisateur les détails d’un rendez-vous médical reporté. Les authorization_details peuvent être personnalisés pour afficher la nouvelle heure et la nouvelle date.

Fonctionnement

Le flux d’autorisation de l’utilisateur avec CIBA ressemble au flux d’authentification de l’utilisateur avec CIBA, où la prise en charge de RAR permet aux clients de transmettre les authorization_details au serveur d’autorisation via le point de terminaison /bc-authorize. Le diagramme de séquence suivant illustre le flux complet d’autorisation de l’utilisateur avec CIBA :
Les sections suivantes expliquent, étape par étape, le fonctionnement de l’autorisation de l’utilisateur avec CIBA.

Prérequis

Pour lancer une requête CIBA avec Auth0, vous devez :

Étape 1 : L’application cliente lance une requête CIBA

Utilisez les API User Search pour trouver l’utilisateur qui autorise la requête pour lequel vous souhaitez lancer une requête CIBA et obtenir son ID utilisateur. Une fois que vous avez l’ID utilisateur de l’utilisateur qui autorise la requête, utilisez l’Authentication API pour envoyer une requête CIBA avec authorization_details au point de terminaison /bc-authorize :

Étape 2 : le tenant Auth0 reçoit la requête CIBA

Si le tenant Auth0 reçoit bien la requête POST, vous devriez recevoir une réponse contenant un auth-req-id associé à la requête :
La valeur auth_req_id est transmise à l’endpoint /token pour vérifier, à intervalles réguliers, si le CIBA flow est terminé.

Étape 3 : L’application cliente interroge périodiquement pour obtenir une réponse

Utilisez l’Authentication API pour appeler le point de terminaison /token à l’aide du type d’octroi urn:openid:params:grant-type:ciba et du auth_req_id reçu du point de terminaison /bc-authorize :
Jusqu’à ce que l’utilisateur chargé d’autoriser approuve la transaction, vous devriez recevoir la réponse suivante :
Il faut attendre environ cinq secondes entre chaque requête de polling. Si vous effectuez le polling trop fréquemment, vous recevrez la réponse suivante, où la description varie selon l’intervalle de temporisation :
Pour résoudre l’erreur, attendez le prochain intervalle (en secondes) avant d’interroger de nouveau l’endpoint /token.

Étape 4 : l’appareil d’authentification reçoit la notification

Selon le canal de notification, Auth0 envoie une notification à l’appareil d’authentification :
  • Notification push mobile : Auth0 l’envoie à l’application Auth0 Guardian ou à une application mobile personnalisée intégrant le SDK Auth0 Guardian.
  • Notification par courriel : Auth0 l’envoie à l’adresse courriel vérifiée de l’utilisateur.
L’appareil d’authentification récupère les détails du consentement, c.-à-d. le contenu du binding_message, à partir de l’Auth0 Consent API :
  • notification push mobile : l’application Auth0 Guardian ou une application personnalisée intégrée à l’Auth0 Guardian SDK appelle l’Auth0 Consent API pour récupérer les détails du consentement.
  • Notification par courriel : lorsque l’utilisateur clique sur le lien de vérification, il est redirigé vers le navigateur, qui récupère les détails du consentement à partir de l’Auth0 Consent API.
L’Auth0 Consent API renvoie à l’appareil d’authentification les détails du consentement, y compris binding_message, scope, audience et authorization_details, s’ils sont configurés. Les scopes renvoyés à l’application mobile sont filtrés selon votre politique RBAC. Pour en savoir plus, consultez Contrôle d’accès basé sur les rôles. L’exemple de code suivant montre une réponse type de l’Auth0 Consent API :
L’appareil d’authentification présente à l’utilisateur les détails du consentement avec authorization_details : L’utilisateur peut accepter ou refuser la demande d’autorisation à cette étape.

Étape 7 : L’appareil d’authentification renvoie la réponse de l’utilisateur à Auth0

Après que l’utilisateur a accepté ou refusé la demande d’autorisation, l’appareil d’authentification renvoie la réponse de l’utilisateur à Auth0 :
  • Notification poussée mobile : l’application Auth0 Guardian ou une application personnalisée intégrée au SDK Auth0 Guardian renvoie la réponse de l’utilisateur à Auth0.
  • Notification par courriel : le navigateur renvoie la réponse de l’utilisateur à Auth0.

Étape 8 : Auth0 reçoit la réponse de l’utilisateur une fois le flux terminé

L’application cliente met fin à l’interrogation périodique lorsqu’elle reçoit une réponse du point de terminaison /token. Un flux CIBA exige toujours une réponse — approbation ou refus — de la part de l’utilisateur autorisant, sans vérifier les autorisations déjà accordées. Cela signifie qu’Auth0 traite chaque requête CIBA comme une nouvelle autorisation de la part de l’utilisateur autorisant.

Étape 9 : Auth0 renvoie le jeton d’accès à l’application cliente

Si l’utilisateur refuse la demande push, Auth0 renvoie à l’application cliente une réponse d’erreur comme celle-ci :
Si l’utilisateur approuve la demande push, Auth0 renvoie à l’application cliente un contenant les authorization_details suivants :
Le refresh_token n’est présent que si le scope offline_access a été inclus dans la requête initiale envoyée à /bc-authorize.

Interroger authorization_details

Au moment de la compilation, vous pouvez interroger le type et les objets de authorization_details à partir des détails du consentement de manière fortement typée, comme vous le feriez en interrogeant dynamiquement du JSON :
Si vous définissez un type personnalisé pour représenter votre objet, vous pouvez utiliser la fonction filterAuthorizationDetailsByType() pour renvoyer tous les objets authorization_details qui correspondent au type souhaité. L’exemple de code suivant interroge authorization_details avec le type payment :
filterAuthorizationDetailsByType() renvoie uniquement les objets correspondant au type authorization_details spécifié. Par conséquent, votre application mobile devrait présenter à l’utilisateur tous les authorization_details pertinents pour le consentement, quel que soit leur type, afin d’assurer une compréhension complète de la requête. Vous pouvez aussi interroger les authorization_details lorsque l’agent IA ou l’application interroge périodiquement le point de terminaison /oauth/token pour obtenir une réponse :
Lorsque l’utilisateur qui autorise approuve la requête, Auth0 reçoit la réponse de l’utilisateur et le flux CIBA se termine en renvoyant un jeton d’accès et un tableau authorization_details :

Limitations

Auth0 ne prend pas en charge :
  • La modification de RAR dans Actions pour les flux CIBA.
  • La publication de types RAR pour que les clients puissent les découvrir, ce qui signifie que vous devez enregistrer au préalable les clients avec les types authorization_details qu’ils peuvent envoyer.
  • La validation des objets RAR au-delà de la vérification qu’ils comportent une propriété type correspondant aux types autorisés pour l’API. Votre serveur de ressources est responsable de la validation granulaire du contenu de authorization_details. Pour en savoir plus, consultez Configurer RAR.

En savoir plus