Skip to main content
Ce tutoriel vous aide à appeler votre propre API à partir d’une application native, mobile ou monopage à l’aide du flux de code d’autorisation avec PKCE. Pour savoir comment ce flux fonctionne et pourquoi vous devriez l’utiliser, consultez Authorization Code Flow with Proof Key for Code Exchange (PKCE). Pour apprendre à ajouter la connexion à votre application native, mobile ou monopage, consultez Add Login Using Authorization Code Flow with PKCE.
Auth0 permet à votre application de mettre facilement en œuvre le flux de code d’autorisation avec clé de preuve pour l’échange de code (PKCE) à l’aide de :

Prérequis

Avant de commencer ce tutoriel :
  • Enregistrez l’application dans Auth0.
    • Sélectionnez un type d’application Native ou Single-Page App, selon le type de votre application.
    • Ajoutez une URL de rappel autorisée : {yourCallbackUrl}. Le format de votre URL de rappel varie selon le type de votre application et votre plateforme. Pour en savoir plus sur le format correspondant à votre type d’application et à votre plateforme, consultez nos Quickstarts Native/Mobile et Quickstarts Single-Page App.
    • Assurez-vous que les types d’octroi de l’application comprennent Code d’autorisation. Pour savoir comment faire, consultez Mettre à jour les type d’octroi.
    • Si vous voulez que votre application puisse utiliser des jetons d’actualisation, assurez-vous que les types d’octroi de l’application comprennent Jeton d’actualisation. Pour savoir comment faire, consultez Mettre à jour les type d’octroi. Pour en savoir plus sur les jetons d’actualisation, consultez Jetons d’actualisation.
  • Enregistrez votre API dans Auth0
    • Si vous voulez que votre API reçoive des jetons d’actualisation afin de pouvoir obtenir de nouveaux jetons lorsque les précédents expirent, activez Allow Offline Access.

Étapes

  1. Créer le code verifier: Générez un code_verifier qui sera envoyé à Auth0 pour demander des jetons.
  2. Créer le code challenge: Générez un code_challenge à partir du code_verifier, qui sera envoyé à Auth0 pour demander un authorization_code.
  3. Autoriser l’utilisateur: Demandez l’autorisation de l’utilisateur, puis redirigez-le vers votre application avec un authorization_code.
  4. Demander des jetons: Échangez votre authorization_code et votre code_verifier contre des jetons.
  5. Appeler l’API: Utilisez le jeton d’accès récupéré pour appeler votre API.
  6. Actualiser les jetons: Utilisez un jeton d’actualisation pour demander de nouveaux jetons lorsque les jetons actuels expirent.
Facultatif : Voir des exemples de cas d’utilisation.

Créer le code_verifier

Créez un code_verifier, soit une clé encodée en Base64 générée de façon cryptographiquement aléatoire, qui sera ensuite envoyée à Auth0 pour demander des jetons.

Exemple en Javascript

Exemple en Java

Exemple pour Android

Exemple en Swift 5

Exemple en Objective-C

Créer un code challenge

Générez un code_challenge à partir du code_verifier, qui sera envoyé à Auth0 pour demander un authorization_code.

Exemple en Javascript

Exemple en Java

Exemple en Swift 5

Exemple en Objective-C

Autoriser l’utilisateur

Une fois que vous avez créé le code_verifier et le code_challenge, vous devez obtenir l’autorisation de l’utilisateur. Techniquement, c’est le début du , et cette étape peut comprendre un ou plusieurs des processus suivants :
  • Authentifier l’utilisateur;
  • Rediriger l’utilisateur vers un pour prendre en charge l’authentification;
  • Vérifier s’il existe des sessions d’authentification unique (SSO) actives;
  • Obtenir le consentement de l’utilisateur pour le niveau de permission demandé, à moins que ce consentement n’ait déjà été accordé.
Pour autoriser l’utilisateur, votre application doit le rediriger vers l’URL d’autorisation, en incluant le code_challenge généré à l’étape précédente ainsi que la méthode utilisée pour générer le code_challenge.

Exemple d’URL d’autorisation

Paramètres
Notez que pour autoriser un utilisateur lors d’une requête vers une API personnalisée, vous :
  • devez inclure un paramètre
  • pouvez inclure des scopes supplémentaires pris en charge par l’API cible
À titre d’exemple, l’extrait HTML de votre authorization URL lors d’une requête à une API pourrait ressembler à ceci :

Réponse

Si tout se passe bien, vous recevrez une réponse HTTP 302. Le code d’autorisation figure à la fin de l’URL :

Demander des jetons

Maintenant que vous avez un Authorization Code, vous devez l’échanger contre des jetons. À l’aide de l’Authorization Code (code) extrait à l’étape précédente, vous devrez envoyer une requête POST au URL du jeton en y joignant le code_verifier.

Exemple de requête POST au URL du jeton

Paramètres

Réponse

Si tout se passe bien, vous recevrez une réponse HTTP 200 avec un payload contenant les valeurs access_token, refresh_token, id_token et token_type :
Validez vos jetons avant de les enregistrer. Pour savoir comment faire, consultez valider le jeton d’identité et Valider les jetons d’accès.
Les jetons d’identité contiennent des renseignements sur l’utilisateur qui doivent être décodés puis extraits. Les jetons d’accès servent à appeler le point de terminaison /userinfo de l’API d’authentification Auth0 ou une autre API. Si vous appelez votre propre API, la première chose qu’elle devra faire sera de vérifier le jeton d’accès. Les jetons d’actualisation servent à obtenir un nouveau ou après l’expiration du précédent. Le refresh_token ne sera présent dans la réponse que si vous avez inclus le scope offline_access et activé Allow Offline Access pour votre API dans le Dashboard.
Les jetons d’actualisation doivent être stockés de façon sécurisée, puisqu’ils permettent à un utilisateur de rester authentifié pratiquement indéfiniment.

Appeler l’API

Pour appeler votre API depuis une application native/mobile, l’application doit transmettre le jeton d’accès obtenu comme jeton Bearer dans l’en-tête Authorization de la requête HTTP.

Jetons d’actualisation

Vous avez déjà reçu un jeton d’actualisation si vous avez suivi ce tutoriel et effectué les étapes suivantes :
  • configuré votre API pour autoriser l’accès hors ligne
  • inclus le scope offline_access lorsque vous avez lancé la requête d’authentification par le point de terminaison authorize.
Vous pouvez utiliser le pour obtenir un nouveau jeton d’accès. En général, un utilisateur n’a besoin d’un nouveau jeton d’accès qu’après l’expiration du précédent ou lorsqu’il accède à une nouvelle ressource pour la première fois. Il n’est pas recommandé d’appeler le point de terminaison pour obtenir un nouveau jeton d’accès chaque fois que vous faites une requête à une API, et Auth0 applique des limites de débit qui restreignent le nombre de requêtes au point de terminaison pouvant être exécutées avec le même jeton à partir de la même adresse IP. Pour actualiser votre jeton, faites une requête POST au point de terminaison /oauth/token dans l’Authentication API, en utilisant grant_type=refresh_token.

Exemple de requête POST vers l’URL du jeton

Paramètres

Réponse

Si tout se passe bien, vous recevrez une réponse HTTP 200 dont la charge utile contient un nouvel access_token, sa durée de validité en secondes (expires_in), les valeurs de scope accordées, ainsi que token_type. Si la portée du token initial comprenait openid, la réponse inclura également un nouvel id_token :
Validez vos jetons avant de les enregistrer. Pour savoir comment les valider, consultez Valider le jeton d’identité et Valider les jetons d’accès.

Exemples de scénarios d’utilisation

Personnaliser les jetons

Vous pouvez utiliser les Actions pour modifier les scopes renvoyés dans les Access Tokens et/ou ajouter des claims aux Access Tokens et aux ID Tokens. (Pour en savoir plus sur les Actions, consultez Auth0 Actions. ) Pour ce faire, ajoutez l’Action suivante, qui s’exécutera une fois l’utilisateur authentifié :
Les scopes seront disponibles dans le jeton une fois l’Action exécutée.
Auth0 renvoie les informations de profil sous forme de claims structurés, comme le définit la spécification OpenID Connect (OIDC). Cela signifie que les custom claims ajoutées aux ID tokens ou aux jetons d’accès doivent respecter les directives et les restrictions afin d’éviter d’éventuelles collisions.

Voir un exemple d’application : application mobile + API

Pour un exemple de mise en œuvre, consultez le scénario d’architecture Mobile + API. Cette série de tutoriels s’accompagne d’un exemple de code accessible sur GitHub.

En savoir plus