Passer au contenu principal
Si Token Vault est activé pour votre connexion, les jetons d’accès et d’actualisation ne seront plus stockés dans le tableau identities de l’utilisateur. Ils seront plutôt stockés dans un jeu de jetons sécurisé dans Token Vault. Pour activer Token Vault, consultez Configurer Token Vault.
Une fois que vous avez authentifié avec succès un utilisateur auprès d’un (IdP) externe, comme Facebook ou GitHub, l’IdP inclut souvent un dans le profil de l’utilisateur qu’il renvoie à Auth0. Vous pouvez récupérer et utiliser ce jeton pour appeler l’API de l’IdP.
Cet article suppose que vous avez déjà configuré la connexion avec l’IdP de votre choix. Sinon, accédez à Fournisseurs d’identité pris en charge par Auth0, sélectionnez l’IdP souhaité et suivez les étapes de configuration.
Le processus à suivre diffère selon que votre code s’exécute dans le backend ou le frontend :
  • Si votre code s’exécute dans le backend, nous pouvons supposer que votre serveur est fiable et peut stocker des secrets en toute sécurité (comme vous le verrez, nous utilisons un secret dans le scénario backend). Si c’est le cas, passez à la section backend de cet article.
  • Si votre code s’exécute dans le frontend (par exemple, il s’agit d’une application monopage, d’une application de bureau native ou d’une application mobile), votre application ne peut pas stocker des identifiants de façon sécurisée et doit suivre une autre approche. Dans ce cas, passez à la section frontend de cet article.

Du backend

Une fois que vous authentifiez un utilisateur, l’IdP inclut souvent un Jeton d’accès dans le profil utilisateur qu’il renvoie à Auth0. Pour des raisons de sécurité et de conformité, Auth0 n’envoie pas ce jeton à votre application dans le profil utilisateur. Pour l’obtenir, vous devez accéder à la d’Auth0 et récupérer le profil complet de l’utilisateur :
  1. Obtenez un Jeton d’accès qui vous permet d’appeler la Management API d’Auth0.
  2. Appelez le point de terminaison Get Users by ID de la Management API d’Auth0 à l’aide du Jeton d’accès obtenu à l’étape 1. Ce point de terminaison renvoie le profil complet de l’utilisateur, qui contient le Jeton d’accès de l’IdP.
  3. Extrayez le Jeton d’accès de l’IdP de la réponse et utilisez-le pour appeler l’API de l’IdP.

Étape 1 : Obtenir un jeton

Vous aurez besoin d’un jeton d’accès pour appeler la Management API.

Créer une application de test pour la Management API

Si c’est la première fois que vous demandez un jeton Management API v2, vous devrez créer et configurer une application pouvant être utilisée pour appeler la Management API :
  1. Accédez à Auth0 Dashboard > Applications > APIs, puis sélectionnez Auth0 Management API.
  2. Sélectionnez la vue API Explorer, puis cliquez sur Create & Authorize a Test Application.
Cela créera une nouvelle application et lui attribuera tous les scopes de la Management API, ce qui signifie que les jetons générés pour cette application pourront accéder à tous les points de terminaison de la Management API.

Vous ne voyez pas le bouton ?

Si vous ne voyez pas ce bouton, cela signifie que vous avez déjà au moins une application autorisée pour la Management API. Dans ce cas, vous pouvez soit mettre à jour les scopes de l’application existante et l’utiliser, soit en créer une nouvelle en suivant ces étapes :
  1. Accédez à Auth0 Dashboard > Applications > Applications, puis sélectionnez Create Application.
  2. Sélectionnez Machine to Machine Applications, puis Create.
  3. Dans la liste déroulante Select an API, sélectionnez Auth0 Management API.
  4. Activez les scopes requis, puis sélectionnez Authorize.
  5. Sélectionnez la vue APIs, puis activez le commutateur pour Auth0 Management API.
Pour des raisons de sécurité, nous vous recommandons d’attribuer uniquement les scopes requis à l’application que vous utiliserez. Dans ce cas précis, les scopes dont vous avez besoin sont : read:users, read:user_idp_tokens. Les scopes requis sont indiqués pour chaque point de terminaison dans le Management API Explorer.
Pour accorder ou retirer des scopes de l’Auth0 Management API enregistrée, sélectionnez la vue Machine to Machine Applications :
Modifier les scopes attribués à l’application

Obtenir le jeton de la Management API

La configuration est maintenant terminée, et vous êtes prêt à obtenir votre jeton de la Management API :
  1. Dans la Management API d’Auth0 que vous avez enregistrée, sélectionnez la vue Test.
  2. Choisissez votre application dans la liste déroulante Application pour préremplir les extraits de code prêts à l’emploi avec des variables personnalisées.
  3. Choisissez la langue de votre choix pour l’extrait, puis copiez-le et exécutez-le.
  4. Récupérez la propriété access_token de la réponse. C’est ce que vous utiliserez pour accéder à la Management API.

Que font les extraits de code ?

Les extraits de code effectuent une opération POST vers le point de terminaison /oauth/token de l’Auth0 Authentication API, en utilisant le grant Client Credentials d’OAuth 2.0. Il s’agit du grant utilisé par les processus machine à machine pour accéder à une API. Pour en savoir plus sur ce flux, consultez Client Credentials Flow.

Expiration du jeton

Par défaut, le jeton que vous avez reçu expire après 24 heures (86 400 secondes). Pour modifier cette valeur :
  1. Accédez à Auth0 Dashboard > Applications > APIs, puis sélectionnez l’Auth0 Management API.
  2. Sélectionnez l’onglet Settings, repérez le champ Token Expiration (Seconds), saisissez une nouvelle valeur, puis cliquez sur Save. La valeur maximale que vous pouvez définir est de 2 592 000 secondes (30 jours), mais nous vous recommandons de conserver la valeur par défaut.
Le prochain jeton que vous générerez utilisera la nouvelle durée d’expiration.
Ces jetons ne peuvent pas être révoqués. Pour réduire les risques, nous vous recommandons d’émettre des jetons de courte durée et d’accorder uniquement les scopes nécessaires à chaque application. Dans un environnement de production, vous pouvez configurer un CLI simple qui récupérera un nouveau jeton lorsque l’ancien expirera.

Étape 2 : Obtenir le profil complet de l’utilisateur

Pour obtenir le profil d’un utilisateur, appelez le point de terminaison Get a User du Management API à l’aide du jeton d’accès que vous avez extrait dans la section précédente : Remplacez ces valeurs :
  • {userId} : ID de l’utilisateur pour lequel vous voulez appeler l’API de l’IdP.
  • {yourAccessToken} : jeton d’accès que vous avez extrait dans la section précédente.

Où trouver l’ID utilisateur ?

  • À des fins de test, vous pouvez trouver un ID utilisateur dans Auth0 Dashboard > User Management > Users. Repérez un utilisateur, puis copiez la valeur du champ user_id.
  • Pour votre implémentation, vous pouvez soit extraire l’ID utilisateur de la revendication sub dans le ID Token, soit appeler le point de terminaison /userinfo de l’Authentication API et extraire cette valeur de la propriété user_id dans la réponse.

Étape 3 : Extraire le jeton d’accès de l’IdP

Vous trouverez le jeton d’accès utilisé pour appeler l’API de l’IdP dans le tableau identities de l’utilisateur : user.identities[0].access_token.
Pour certains fournisseurs d’identité, Auth0 stocke également un Jeton d’actualisation, que vous pouvez utiliser pour obtenir un nouveau Jeton d’accès pour l’IdP. C’est le cas pour : BitBucket, Google (OAuth 2.0), OAuth 2.0, SharePoint et Azure AD. Pour en savoir plus, consultez Jetons d’accès de fournisseur d’identité.
Dans la plupart des cas, l’utilisateur n’aura qu’une seule identité, mais s’il s’est connecté plusieurs fois au moyen de différentes connexions et que vous avez utilisé la liaison de comptes, il peut y en avoir plusieurs. Dans cet exemple de réponse, nous voyons que notre utilisateur n’a qu’une seule identité : google-oauth2.
{
  "email": "john.doe@test.com",
  "email_verified": true,
  "name": "John Doe",
  "given_name": "John",
  "family_name": "Doe",
  "picture": "https://myavatar/photo.jpg",
  "gender": "male",
  "locale": "en",
  "updated_at": "2017-03-15T07:14:32.451Z",
  "user_id": "google-oauth2|111199914890750704174",
  "nickname": "john.doe",
  "identities": [
    {
      "provider": "google-oauth2",
      "access_token": "ya29.GlsPBCS6ahokDlgCYnVLnDKNE71HBXPEzNhAPoKJLAGKDSe1De3_xclahNcdZXoU-26hCpa8h6240TV86dtaEQ4ZWoeeZduHDq_yeu9QyQqUr--S9B2CR9YJrLTD",
      "expires_in": 3599,
      "user_id": "111199914890750704174",
      "connection": "google-oauth2",
      "isSocial": true
    }
  ],
  "created_at": "2017-03-15T07:13:41.134Z",
  "last_ip": "127.0.0.1",
  "last_login": "2017-03-15T07:14:32.451Z",
  "logins_count": 99
}
Vous êtes maintenant prêt à appeler l’API de l’IdP. Consultez la documentation de l’IdP pour savoir exactement comment procéder.
N’exposez pas les jetons de l’IdP à votre application côté client ! Si votre application est publique, consultez la section sur le front-end de cet article.
Pour en savoir plus sur la façon de demander des scopes précis pour un Jeton d’accès du fournisseur d’identité, consultez Ajouter des scopes/autorisations pour appeler les API d’un fournisseur d’identité.

Depuis le frontend

Si vous travaillez avec une application publique (SPA, application de bureau native ou application mobile), c’est la section qu’il vous faut. Lorsque vous travaillez avec une application frontend, le processus pour appeler les API d’IdP diffère de celui du backend, car les applications frontend sont des applications publiques qui ne peuvent pas stocker des identifiants de façon sécurisée. Comme le code d’une SPA peut être consulté et modifié, et que les applications natives et mobiles peuvent être décompilées et inspectées, on ne peut pas leur faire confiance pour stocker des renseignements sensibles comme des clés secrètes ou des mots de passe. Plus précisément, elles ne peuvent pas stocker de façon sécurisée le de l’application Machine to Machine, que vous utilisez pour appeler /oauth/token à la première étape du processus backend. Vous devez plutôt créer un proxy pour votre backend et l’exposer à votre application sous forme d’API.

Créer un proxy

D’abord, vous mettrez en place un processus dans votre backend qui exécutera les étapes décrites dans la section backend de cet article, puis l’exposera à votre application sous forme d’API. Vous appellerez l’API de l’IdP à partir du même processus backend, afin que le Jeton d’accès ne soit jamais exposé à votre application publique. Ensuite, vous appellerez l’API de votre proxy depuis votre application publique en utilisant le flux de code d’autorisation avec clé de preuve pour l’échange de code (PKCE).

Montrez-moi comment

Si vous n’avez jamais implémenté cela auparavant, notre scénario d’architecture Applications monopages (SPA) avec API pourrait vous être utile. Il couvre un scénario différent, mais explique comment configurer Auth0, comment appeler une API à partir d’une SPA et comment mettre en œuvre les validations d’API. Il comprend un exemple qui utilise Angular 2 et Node.js.Nous proposons aussi une variante Applications mobiles avec API (l’exemple utilise Android et Node.js).