Skip to main content
Connected Accounts for Token Vault permet aux applications d’accéder de façon sécurisée à des API externes au nom de l’utilisateur par l’entremise de Token Vault. Alors que l’authentification utilisateur standard gère la connexion de l’utilisateur par l’intermédiaire d’un fournisseur d’identité social ou d’entreprise, Connected Accounts lie un profil utilisateur à des services externes comme Google, GitHub, Slack et plus encore, ce qui facilite l’accès délégué aux API externes au nom de l’utilisateur. Lorsqu’un utilisateur connecte son compte avec succès et autorise l’accès à un fournisseur externe pris en charge, Auth0 :
  • Associe le compte à l’utilisateur comme compte connecté.
  • Stocke dans Token Vault les jetons d’accès et d’actualisation du fournisseur externe pour le compte connecté.
Connected Accounts for Token Vault crée et gère un profil utilisateur Auth0 unifié lié à plusieurs comptes externes, ce qui permet une autorisation fluide. Votre application récupère ensuite les informations d’identification stockées dans Token Vault pour interagir avec des API externes au nom de l’utilisateur.

Authentification de l’utilisateur vs comptes connectés

Lorsque vous configurez les comptes connectés pour une connexion sociale ou d’entreprise prise en charge, Auth0 utilise le flux des comptes connectés (point de terminaison /me/v1/connected-accounts) pour récupérer et stocker les jetons d’accès et d’actualisation dans le Token Vault, au lieu d’utiliser le flux de connexion sociale ou d’entreprise (point de terminaison /authorize). Une fois le flux des comptes connectés terminé avec succès, Auth0 ajoute le compte d’utilisateur au tableau connected_accounts du profil d’utilisateur. À l’inverse, pour le flux de connexion sociale ou d’entreprise, Auth0 ajoute le compte d’utilisateur au tableau identities du profil d’utilisateur. Le tableau suivant explique les différences entre les flux d’authentification de l’utilisateur et des comptes connectés : Vous pouvez activer l’authentification de l’utilisateur, les comptes connectés ou les deux pour les connexions sociales ou d’entreprise prises en charge. Le tableau suivant explique le comportement selon les différents paramètres de l’objectif, y compris la façon de transmettre des scopes à la connexion :

Fonctionnement

Le flux Connected Accounts utilise la My Account API pour créer et gérer les comptes connectés d’un utilisateur auprès des fournisseurs externes pris en charge. Avant que l’utilisateur puisse lancer une demande Connected Accounts depuis l’application cliente, celle-ci doit obtenir un jeton d’accès avec les portées Connected Accounts pour accéder à la My Account API.
Si votre application utilise Organizations, authentifiez l’utilisateur auprès de l’organisation cible avant de lancer le flux Connected Accounts. Token Vault stocke le compte connecté dans le profil Auth0 de l’utilisateur. Chaque membre de l’organisation doit donc connecter et autoriser son propre compte externe.
Le diagramme de séquence suivant illustre le flux Connected Accounts de bout en bout :
Lorsqu’un utilisateur ouvre une session au moyen d’un fournisseur externe pris en charge par l’intermédiaire d’Auth0, il lance une demande Connected Accounts depuis l’application cliente :
  1. L’application cliente effectue une requête POST vers le point de terminaison /me/v1/connected-accounts/connect de la My Account API, en transmettant les portées et d’autres paramètres à envoyer au fournisseur externe. Pour en savoir plus, consultez Initiate Connected Accounts request.
  2. La My Account API crée un auth_session unique et un connect_uri contenant un ticket, qui redirige l’utilisateur vers un navigateur Web. L’application cliente enregistre l’auth_session pour vérification ultérieure. Si DPoP est configuré, la My Account API valide le DPoP Proof JWT.
  3. L’application cliente redirige l’utilisateur vers le connect_uri avec le ticket comme paramètre de requête, afin qu’il puisse s’authentifier et autoriser l’accès dans le navigateur. L’application cliente peut aussi transmettre un code_challenge ou un code_challenge_method dans l’URL, comme dans le flux de code d’autorisation avec PKCE.
  4. L’utilisateur connecte son compte et autorise les permissions de la connexion dans l’écran de consentement.
  5. Une fois la connexion autorisée par l’utilisateur, le fournisseur externe redirige celui-ci vers la My Account API, qui le redirige ensuite vers l’application cliente au moyen du redirect_uri avec un connect_code à usage unique.
  6. L’application cliente présente le connect_code, le code_verifier (s’il y a lieu) et l’auth_session d’origine à la My Account API en effectuant une requête POST vers le point de terminaison /me/v1/connected-accounts/complete. Pour en savoir plus, consultez Complete Connected Accounts request.
  7. La My Account API valide la requête en confirmant ce qui suit :
    • l’auth_session correspond à l’ID initialement émis pour l’utilisateur
    • la requête provient du même appareil que celui ayant lancé le flux Connected Accounts
    • le DPoP Proof JWT (si configuré)
    • le connect_code à usage unique
    • le code_verifier (si vous utilisez le flux PKCE)
  8. Une fois la validation réussie, l’Auth0 Authorization Server ajoute le compte au tableau connected_accounts du profil utilisateur et stocke les jetons d’accès et d’actualisation du compte connecté dans le Token Vault.
  9. La My Account API termine le flux en renvoyant un code d’état 200 à l’application cliente, indiquant que le compte a bien été connecté.

Prérequis

Avant de configurer Connected Accounts, assurez-vous de :
  • Configurer Token Vault pour votre application client afin d’y stocker de façon sécuritaire les jetons d’accès et d’actualisation associés à chaque compte connecté.
  • Configurer l’API My Account, que les utilisateurs authentifiés utilisent pour connecter et gérer leurs comptes.
  • Configurer le Multi-Resource Refresh Token (MRRT) afin d’obtenir un jeton d’accès pour l’API My Account.
  • (Facultatif) Configurer DPoP pour l’API My Account et votre application client afin de lier les jetons d’accès à l’émetteur, ce qui aide à prévenir le vol de jetons. Par défaut, l’API My Account peut accepter des jetons d’accès liés à DPoP.

Configurer My Account API

Pour utiliser Connected Accounts, configurez My Account API dans l’Auth0 Dashboard :
  1. Accédez à Applications > APIs et activez My Account API.
  2. Une fois l’API activée, sélectionnez Auth0 My Account API, puis l’onglet Application Access.
  3. Repérez votre application cliente et sélectionnez Edit pour configurer ses politiques d’accès de l’application.
  4. Sélectionnez User Access et, sous Authorization, sélectionnez Authorized.
  5. Pour les permissions, sélectionnez All pour toutes les portées de Connected Accounts de l’application.
  6. Sélectionnez Save. Cela crée un client grant qui permet à votre application cliente d’accéder à My Account API avec les portées de Connected Accounts au nom de l’utilisateur.
  7. Si vous utilisez Multi-Resource Refresh Token, accédez à l’onglet Settings. Sous Access Settings, sélectionnez Allow Skipping User Consent.

Configurer le Multi-Resource Refresh Token

Configurez le Multi-Resource Refresh Token (MRRT) pour obtenir un seul jeton d’actualisation de longue durée, qui peut être échangé contre de nouveaux jetons d’accès pour My Account API et d’autres API sans obliger l’utilisateur à s’authentifier de nouveau. Vous pouvez configurer le MRRT dans l’Auth0 Dashboard ou au moyen de la Management API.
Pour configurer le MRRT dans l’Auth0 Dashboard :
  1. Accédez à Applications > Applications et sélectionnez votre application.
  2. Sous Multi-Resource Refresh Token, sélectionnez Edit Configuration.
  3. Pour activer le MRRT avec My Account API, activez la bascule My Account API.

Configurer les comptes connectés

Avant de configurer les comptes connectés pour une connexion, assurez-vous d’avoir autorisé la connexion pour votre application cliente. Dans l’Auth0 Dashboard :
  1. Accédez à Authentication > Social Connections ou Enterprise Connections, puis sélectionnez la connexion.
  2. Sélectionnez Applications, puis activez la connexion pour votre application cliente.
Vous pouvez configurer les comptes connectés dans l’Auth0 Dashboard ou avec la Management API.
Pour configurer les comptes connectés dans l’Auth0 Dashboard :
  1. Accédez à Authentication > Social Connections ou Enterprise Connections.
  2. Sélectionnez Create Connection ou une connexion existante.
  3. Dans Purpose, activez Connected Accounts for Token Vault. Selon le réglage Purpose, vous devrez peut-être activer offline_access dans l’Auth0 Dashboard pour permettre à l’application cliente d’obtenir un refresh token du fournisseur externe pendant le flux des comptes connectés. Pour en savoir plus, consultez Authentification de l’utilisateur vs comptes connectés.
  4. Cliquez sur Save.

Obtenir un jeton d’accès pour Connected Accounts

Avant d’amorcer une requête Connected Accounts, obtenez un jeton d’accès pour l’API My Account avec les portées Connected Accounts. Les sections suivantes expliquent comment utiliser un jeton d’actualisation multiresource (MRRT) pour obtenir un jeton d’accès pour l’API My Account.

Obtenir un jeton d’actualisation

Après avoir configuré MRRT pour l’application cliente, lancez le flux avec code d’autorisation et échangez le code d’autorisation obtenu contre un jeton d’actualisation. Voici une requête du flux avec code d’autorisation pour un client confidentiel qui inclut offline_scope afin d’obtenir un jeton d’actualisation et un code d’autorisation à usage unique pour l’identifiant de l’API My Account API https://{yourDomain}/me/ :
Échangez le code d’autorisation à usage unique contre un refresh token à l’endpoint /token :

Échanger un refresh token contre un jeton d’accès à l’API My Account

Une fois que vous avez obtenu un refresh token, échangez-le contre un jeton d’accès à l’API My Account associé aux scopes de Connected Accounts en utilisant le grant type refresh token :

Lancer une requête Connected Accounts

Pour lancer une requête Connected Accounts, envoyez une requête POST au point de terminaison /me/v1/connected-accounts/connect de la My Account API avec les paramètres suivants :
Pour une connexion sociale Google, assurez-vous de sélectionner offline_access dans Auth0 Dashboard lorsque vous configurez votre connexion. Cela est nécessaire pour que votre application cliente puisse récupérer un jeton d’actualisation auprès de l’Auth0 Authorization Server.
Si la requête réussit, la My Account API renvoie une réponse semblable à ce qui suit :
Dans le navigateur Web, accédez au connect_uri avec le ticket comme paramètre de requête. Sur l’écran de consentement, autorisez les portées demandées, puis extrayez et enregistrez le connect_code dans le fragment d’URL.

Terminer une requête Connected Accounts

Pour terminer une requête Connected Accounts, envoyez une requête POST au point de terminaison /me/v1/connected-accounts/complete avec les paramètres suivants :
Si l’opération réussit, la My Account API renvoie une réponse semblable à celle-ci :

Gérer les comptes connectés

Pour gérer les comptes connectés d’un utilisateur, utilisez la collection /me/v1/connected-accounts. Avant d’utiliser la collection /connected-accounts, obtenez un jeton d’accès pour les comptes connectés.

Interroger les connexions de Connected Accounts

Effectuez une requête GET au point de terminaison /me/v1/connected-accounts/connections pour obtenir la liste des connexions liées au profil utilisateur :
Si la requête réussit, My Accounts API renvoie une réponse comme celle-ci :

Lister les comptes connectés

Faites une requête GET au point de terminaison /me/v1/connected-accounts/accounts pour obtenir une liste des comptes connectés liés au profil utilisateur :
Si l’opération réussit, l’API My Accounts renvoie une réponse comme celle-ci :
Vous pouvez aussi utiliser la Management API pour obtenir la liste des comptes connectés d’un profil utilisateur en effectuant une requête GET au point de terminaison /users/{userId}/connected-accounts :
Si l’opération réussit, la Management API renvoie une réponse comme celle-ci :

Interroger les comptes connectés pour une connexion donnée

Effectuez une requête GET vers le point de terminaison /me/v1/connected-accounts/accounts et transmettez le nom de la connexion comme paramètre de requête afin de renvoyer une liste de comptes connectés filtrés selon une connexion donnée liée à un profil d’utilisateur :
Si l’opération réussit, My Accounts API renvoie une réponse comme celle qui suit, filtrée pour les connexions google-oauth2 :

Supprimer un compte connecté

Effectuez une requête DELETE au point de terminaison /me/v1/connected-accounts/accounts/{connectedAccountId} pour supprimer le compte connecté correspondant à un ID donné :
Lorsque vous supprimez un compte connecté, Auth0 supprime du Token Vault les jetons d’accès et d’actualisation du fournisseur externe. Cela ne révoque pas automatiquement les jetons du fournisseur externe, et le jeton d’actualisation pourrait tout de même servir à obtenir de nouveaux jetons d’accès. Vous devez révoquer manuellement les jetons du fournisseur externe s’ils ont été partagés ou copiés ailleurs. Si l’opération réussit, l’API My Accounts renvoie une réponse semblable à la suivante :