> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-fix-docs-5525.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Flux de code d’autorisation avec Proof Key for Code Exchange (PKCE)

> Découvrez comment fonctionne le flux de code d’autorisation avec Proof Key for Code Exchange (PKCE) et pourquoi vous devriez l’utiliser pour les applications natives et mobiles.

<Card title="Overview">
  Principaux concepts

  * Découvrez le type d’autorisation OAuth 2.0, le Flux de code d’autorisation avec Proof Key for Code Exchange (PKCE).
  * Utilisez ce type d’aurorisation pour les applications incapables de stocker un secret client, comme les applications natives ou à page unique.
  * Passez en revue différentes méthodes d’implémentation avec les trousses SDK Auth0.
</Card>

Lorsque des clients publics (par exemple, des applications natives et monopages) demandent des jetons d’accès, d’autres problèmes de sécurité se posent, qui ne sont pas atténués par le seul flux de code d’autorisation. La raison en est que les

**applications natives**

* ne peuvent pas stocker un <Tooltip href="/docs/fr-ca/glossary?term=client-secret" tip="Secret client
  Secret utilisé par un client (application) pour s’authentifier auprès du serveur d’autorisation; il ne doit être connu que du client et du serveur d’autorisation et doit être suffisamment aléatoire pour ne pas être deviné." cta="Voir le glossaire">Secret client</Tooltip>renvoyé. La décompilation de l’application révèle le secret client, qui est associé à l’application et qui est le même pour tous les utilisateurs et tous les appareils.
* Peut utiliser un schéma d’URL personnalisé pour capturer des redirections (par ex., MyApp\://) permettant potentiellement à des applications malveillantes de recevoir une <Tooltip href="/docs/fr-ca/glossary?term=authorization-code" tip="Code d’autorisation
  Chaîne aléatoire générée par le serveur d’autorisation et renvoyée à l’application dans le cadre de la réponse d’autorisation lors de l’utilisation du flux de code d’autorisation (avec ou sans PKCE)." cta="Voir le glossaire">Code d’autorisation</Tooltip> de votre part <Tooltip href="/docs/fr-ca/glossary?term=authorization-server" tip="Serveur d’autorisations :
  Serveur centralisé qui contribue à définir les limites de l’accès d’un utilisateur. Par exemple, votre serveur d’autorisations peut contrôler les données, les tâches et les fonctionnalités accessibles à un utilisateur. Un serveur d’autorisation ne sert pas à authentifier les utilisateurs. Cette tâche incombe au serveur d’authentification, qui est chargé de vérifier l’identité d’un utilisateur." cta="Voir le glossaire">Serveur d’autorisations :</Tooltip>renvoyé.

**Applications à page unique**

* Ne peuvent pas stocker de manière sécurisée un secret client parce que l’intégralité de leur source est accessible au navigateur.

Compte tenu de ces situations, <Tooltip href="/docs/fr-ca/glossary?term=oath2" tip="OAuth 2.0
Cadre d’applications d’autorisation qui définit les protocoles d’autorisation et les flux de production." cta="Voir le glossaire">OAuth 2.0</Tooltip> fournit une version du flux de code d’autorisation qui utilise une Proof Key for Code Exchange (PKCE) (définie dans [OAuth 2.0 RFC 7636](https://tools.ietf.org/html/rfc7636)).

Le flux de code d’autorisation amélioré par la PKCE introduit un secret créé par l’application appelante qui peut être vérifié par le serveur d’autorisations; ce secret est appelé le vérificateur de code. En outre, l’application appelante crée une valeur de transformation du Vérificateur de code appelée Défi de code et envoie cette valeur via HTTPS pour récupérer un code d’autorisation. De cette manière, un attaquant malveillant ne peut intercepter que le code d’autorisation et ne peut pas l’échanger contre un jeton sans le Vérificateur de code.

## Fonctionnement

Étant donné que le flux de code d’autorisation amélioré par la PKCE s’appuie sur le [flux de code d’autorisation standard](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow) , les étapes sont très similaires.

<Frame>
  <img src="https://mintcdn.com/docs-staging-fix-docs-5525/HuJL_6EYfndOSPiA/docs/images/fr-ca/cdy7uua7fh8z/3pstjSYx3YNSiJQnwKZvm5/191f94844f90a7385b84d4e99d9c538e/auth-sequence-auth-code-pkce.png?fit=max&auto=format&n=HuJL_6EYfndOSPiA&q=85&s=5ff4887044af2d88afa5dab503bf352b" alt="Flux - Code d’autorisation avec PKCE - Schéma de séquence d’autorisation" width="1500" height="1220" data-path="docs/images/fr-ca/cdy7uua7fh8z/3pstjSYx3YNSiJQnwKZvm5/191f94844f90a7385b84d4e99d9c538e/auth-sequence-auth-code-pkce.png" />
</Frame>

1. L’utilisateur clique sur **Connexion** dans l’application.
2. La trousse SDK Auth0 crée un `code_verifier` à chiffrement aléatoire et génère à partir de celui-ci un `code_challenge`.
3. La trousse SDK Auth0 redirige l’utilisateur vers le serveur d’autorisation Auth0 ([`/authorize`](/docs/fr-ca/api/authentication#authorization-code-grant-pkce-)) avec le `code_challenge`.
4. Votre serveur d’autorisations Auth0 redirige l’utilisateur vers l’invite de connexion et d’autorisation.
5. L’utilisateur s’authentifie en choisissant l’une des options de connexion configurées et peut voir apparaître une page de consentement énumérant les autorisations qu’Auth0 accordera à l’application.
6. Votre serveur d’autorisations Auth0 stocke le `code_challenge` et redirige l’utilisateur vers l’application avec un `code` d’autorisation, qui est valable pour une seule utilisation.
7. La trousse SDK Auth0 envoie ce `code` et le `code_verifier` (créé à l’étape 2) au serveur d’autorisations Auth0 `(`[`/oauth/token`](/docs/fr-ca/api/authentication?http#authorization-code-flow-with-pkce44)).
8. Votre serveur d’autorisations Auth0 vérifie le `code_challenge` et le `code_verifier`.
9. Votre serveur d’autorisations Auth0 répond avec un jeton d’ID et un jeton d’accès (et éventuellement un jeton d’actualisation).
10. Votre application peut utiliser le jeton d’accès pour appeler une API afin d’accéder aux informations concernant l’utilisateur.
11. L’API répond avec les données demandées.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si la [Rotation des jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens/refresh-token-rotation) est activée, un nouveau jeton d’actualisation est généré pour chaque demande et émis en même temps que le jeton d’accès. Lorsqu’un jeton d’actualisation est échangé, le jeton d’actualisation précédent est invalidé, mais les informations concernant leur relation sont conservées par le serveur d’autorisations.
</Callout>

## Comment la mettre en œuvre?

La manière la plus simple de mettre en œuvre le flux de code d’autorisation avec PKCE est de [suivre notre Guide rapide pour applications natives](/docs/fr-ca/quickstart/native) ou de [suivre notre Guide rapide pour applications monopages](/docs/fr-ca/quickstart/spa).

En fonction de l’application que vous souhaitez utiliser, vous pouvez également recourir à nos trousses SDK pour applications mobiles ou pour applications à page unique :

**Mobile**

* [Trousse SDK Auth0 pour Swift](/docs/fr-ca/libraries/auth0-swift)
* [Trousse SDK Auth0 pour Android](/docs/fr-ca/libraries/auth0-android)

**Page unique**

* [Trousse SDK Auth0 pour les applications à page unique (SPA)](/docs/fr-ca/libraries/auth0-single-page-app-sdk)
* [Trousse SDK Auth0 pour React](/docs/fr-ca/libraries/auth0-react)

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les progrès récents en matière de contrôle de la vie privée dans les navigateurs ont un impact négatif sur l’expérience de l’utilisateur en empêchant l’accès aux témoins tiers; par conséquent, les flux basés sur les navigateurs doivent utiliser la [Rotation des jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens/refresh-token-rotation), qui offre une méthode sécurisée pour utiliser les jetons d’actualisation dans les SPA, tout en fournissant un accès intégré aux ressources sans interruption dans l’expérience utilisateur causée par les technologies de confidentialité comme ITP.
</Callout>

Vous pouvez suivre nos tutoriels pour utiliser nos points de terminaison d’API pour [Ajouter une connexion en utilisant le flux de code d’autorisation avec PKCE](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/add-login-using-the-authorization-code-flow-with-pkce) ou [Appeler votre API en utilisant le flux de code d’autorisation avec PKCE](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce).

## En savoir plus

* [Règles d'Auth0](/docs/fr-ca/customize/rules)
* [Hooks Auth0](/docs/fr-ca/customize/hooks)
* [Jetons](/docs/fr-ca/secure/tokens)
* [Meilleures pratiques concernant les jetons](/docs/fr-ca/secure/tokens/token-best-practices)
* [Quel flux OAuth 2.0 dois-je utiliser?](/docs/fr-ca/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use)
