Pour utiliser les fonctionnalités de Client-Initiated Backchannel Authentication (CIBA), vous devez disposer d’un plan Enterprise ou d’un module complémentaire approprié. Consultez Auth0 Pricing pour plus de détails.

- Prérequis
- Étape 1 : L’application cliente lance une demande CIBA
- Étape 2 : Le locataire Auth0 confirme la réception de la demande CIBA
- Étape 3 : L’application cliente interroge le système pour obtenir une réponse
- Étape 4 : Auth0 envoie un lien à l’adresse courriel de l’utilisateur
- Étape 5 : L’utilisateur s’authentifie dans le navigateur
- Étape 6 : Le navigateur présente les détails du consentement à l’utilisateur
- Étape 7 : Auth0 reçoit la réponse de l’utilisateur une fois le flux terminé
- Étape 8 : Auth0 renvoie le jeton d’accès à l’application cliente
Prérequis
- Configurer l’authentification backchannel initiée par l’application pour votre locataire et votre application, y compris les notifications par courriel.
- Définir le paramètre
requested_expirysur une valeur comprise entre 301 et 259200 secondes (72 heures). Pour en savoir plus, consultez Configurer le canal de notification. - Si vous utilisez les notifications par courriel avec CIBA et Rich Authorization Requests (RAR) pour l’autorisation de l’utilisateur, définissez l’invite de consentement personnalisée.
Étape 1 : l’application cliente lance une requête CIBA
/bc-authorize :
- cURL
- C#
- Go
- Java
| Paramètres | Description |
|---|---|
tenant | Nom du locataire. Il peut aussi s’agir d’un domaine personnalisé. Si le format iss_sub est utilisé, le nom du locataire est transmis dans la revendication iss. |
client_id | Identifiant de l’application cliente. |
client_secret | Méthode d’authentification de l’application utilisée pour authentifier l’utilisateur avec CIBA, comme Secret client, Private Key JWT ou l’authentification mTLS. Si vous utilisez Private Key JWT ou mTLS, vous n’avez pas besoin d’inclure le secret client. |
scope | Doit inclure openid.Le scope peut aussi inclure offline_access pour demander un jeton d’actualisation. Toutefois, pour l’autorisation ponctuelle d’une transaction avec le flux CIBA, un jeton d’actualisation n’est pas nécessaire et n’a aucune utilité dans ce contexte. |
user_id | ID de l’utilisateur autorisant transmis dans la structure login_hint. Si le format iss_sub est utilisé, l’ID utilisateur est transmis dans la revendication sub.L’ID utilisateur peut avoir un format différent selon le fournisseur externe. |
requested_expiry | Durée maximale, en secondes, pendant laquelle la session CIBA doit rester valide. L’expiration demandée pour le flux CIBA doit être comprise entre 1 et 259200 secondes (72 heures), et la valeur par défaut est de 300 secondes. Incluez le paramètre requested_expiry pour définir une expiration personnalisée pour le flux CIBA.Le paramètre requested_expiry aide à déterminer le canal de notification utilisé par CIBA :
|
binding_message | Message en langage clair utilisé pour associer le flux CIBA entre les appareils d’authentification et de consommation. Le message de liaison est obligatoire et peut contenir jusqu’à 64 caractères. Utilisez uniquement des caractères alphanumériques et les caractères +-_.,:#. |
Une limite de débit propre à l’utilisateur s’applique : l’utilisateur autorisant ne recevra pas plus de 5 requêtes par minute.
Étape 2 : le locataire Auth0 accuse réception de la demande CIBA
POST, vous devriez recevoir une réponse contenant un auth-req-id qui renvoie à la demande :
auth_req_id est transmise au point de terminaison /token pour vérifier périodiquement si le flux CIBA est terminé.
Étape 3 : L’application effectue des requêtes de sondage pour obtenir une réponse
/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 :
- cURL
- C#
- Go
- Java
/token.
Étape 4 : Auth0 envoie un lien à l’adresse courriel de l’utilisateur
login_hint, qui contient l’ID de l’utilisateur autorisant, pour lancer l’authentification de l’utilisateur sur l’appareil d’authentification :
- Le serveur d’autorisation Auth0 envoie un courriel à l’adresse courriel vérifiée de l’utilisateur.
- Le courriel contient un lien de vérification sur lequel l’utilisateur doit cliquer pour s’authentifier. Le
binding_messages’affiche comme code de requête. - Le lien redirige l’utilisateur vers le navigateur au moyen d’une requête vers le point de terminaison
/bc-verify, où le paramètre de requêteconsentfait référence à la requête CIBA en attente de consentement.

Étape 5 : L’utilisateur s’authentifie dans le navigateur
login_hint envoyé au point de terminaison /bc-authorize lorsque l’application lance une requête CIBA. Sinon, un message d’erreur s’affiche et il doit se déconnecter, puis réessayer.

post-login d’Actions s’exécute dans le flux CIBA par courriel, ce qui permet aux clients de fournir une logique personnalisée pour appliquer des stratégies de contrôle d’accès ou demander des facteurs MFA supplémentaires. Lorsqu’il est exécuté à partir d’un lien de vérification CIBA, la valeur de event.transaction.protocol est oidc-ciba-web-link, ce qui vous permet d’appliquer des règles personnalisées à ce type précis de connexion. Pour en savoir plus, consultez Login Trigger.
Une fois authentifié, le navigateur présente à l’utilisateur les détails de consentement provenant de l’API Consent d’Auth0, notamment binding_message, scope et audience. Les scopes sont filtrés en fonction de votre stratégie RBAC. Pour en savoir plus, consultez Role-Based Access Control.
L’exemple de code suivant montre une réponse exemple de l’API Consent d’Auth0 :
Étape 6 : Le navigateur transmet la réponse de l’utilisateur à Auth0
L’utilisateur accepte la demande d’authentification

L’utilisateur refuse la demande d’authentification

Étape 7 : Auth0 reçoit la réponse de l’utilisateur après la fin du flux
/token. Un flux CIBA exige toujours une réponse — approbation ou refus — de la part de l’utilisateur qui autorise la demande, et les autorisations existantes ne sont pas vérifiées.
Étape 8 : Auth0 renvoie un jeton d’accès à l’application cliente
Le
refresh_token n’est présent que si le scope offline_access a été inclus dans la requête initiale à /bc-authorize.