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

> Découvrez comment fonctionne le flux de code d’autorisation avec clé de preuve pour l’échange de code (PKCE) et pourquoi vous devriez l’utiliser pour les applications natives et mobiles.

# Flux de code d’autorisation avec clé de preuve pour l’échange de code (PKCE)

<Card title="Aperçu">
  Concepts clés

  * Découvrez le type d’octroi OAuth 2.0, le flux de code d’autorisation avec clé de preuve pour l’échange de code (PKCE).
  * Utilisez ce type d’octroi pour les applications qui ne peuvent pas stocker de secret client, comme les applications natives ou monopages.
  * Découvrez différentes méthodes de mise en œuvre avec les Auth0 SDKs.
</Card>

Lorsque des <Tooltip tip="Client public : client (application) qui ne peut pas conserver des informations d’identification de façon sécuritaire. Par exemple, une application native de bureau ou mobile et une application web côté client basée sur JavaScript (comme une application monopage (SPA))." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=public+clients">clients publics</Tooltip> (p. ex., les applications natives et monopages) demandent des <Tooltip tip="Client public : client (application) qui ne peut pas conserver des informations d’identification de façon sécuritaire. Par exemple, une application native de bureau ou mobile et une application web côté client basée sur JavaScript (comme une application monopage (SPA))." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=access+tokens">jetons d’accès</Tooltip>, cela soulève des enjeux de sécurité supplémentaires que le flux de code d’autorisation, à lui seul, ne permet pas d’atténuer. En effet :

**Applications natives**

* Ne peuvent pas stocker de façon sécuritaire un <Tooltip tip="Secret du client : secret utilisé par un client (application) pour s’authentifier auprès du serveur d’autorisation; il ne devrait être connu que du client et du serveur d’autorisation et doit être suffisamment aléatoire pour ne pas pouvoir être deviné." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Client+Secret">secret client</Tooltip>. La décompilation de l’application révélera le <Tooltip tip="Secret du client : secret utilisé par un client (application) pour s’authentifier auprès du serveur d’autorisation; il ne devrait être connu que du client et du serveur d’autorisation et doit être suffisamment aléatoire pour ne pas pouvoir être deviné." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Client+Secret">secret client</Tooltip>, qui est associé à l’application et identique pour tous les utilisateurs et appareils.
* Sont vulnérables aux attaques d’interception et d’injection du code d’autorisation. Sans secret client, un attaquant qui intercepte le code d’autorisation peut l’échanger contre des jetons.
* Peuvent utiliser un schéma d’URI personnalisé pour capter les redirections (p. ex., MyApp\://), ce qui pourrait permettre à des applications malveillantes de recevoir un <Tooltip tip="Code d’autorisation : chaîne aléatoire générée par le serveur d’autorisation et renvoyée à l’application dans la réponse d’autorisation lors de l’utilisation du flux de code d’autorisation (avec ou sans PKCE)." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Authorization+Code">code d’autorisation</Tooltip> de votre <Tooltip tip="Serveur d’autorisation : serveur centralisé qui contribue à définir les limites de l’accès d’un utilisateur. Par exemple, votre serveur d’autorisation peut contrôler les données, tâches et fonctionnalités offertes à un utilisateur." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Authorization+Server">serveur d’autorisation</Tooltip>. En raison de ce risque, **Auth0 déconseille fortement l’utilisation de schémas d’URI personnalisés**. Pour en savoir plus, consultez [Measures Against Application Impersonation](/docs/fr-ca/secure/security-guidance/measures-against-app-impersonation.mdx).

**Applications monopages**

* Ne peuvent pas stocker de façon sécuritaire un secret client, parce que l’ensemble de leur code source est accessible dans le navigateur.

Dans ces situations, <Tooltip tip="OAuth 2.0 : cadre d’autorisation qui définit les protocoles et workflows d’autorisation." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=OAuth+2.0">OAuth 2.0</Tooltip> propose une version du flux de code d’autorisation qui utilise une clé de preuve pour l’échange de code (PKCE) (définie dans [OAuth 2.0 RFC 7636](https://tools.ietf.org/html/rfc7636)).

Le flux de code d’autorisation amélioré par PKCE introduit un secret créé par l’application appelante et que le <Tooltip tip="Serveur d’autorisation : serveur centralisé qui contribue à définir les limites de l’accès d’un utilisateur. Par exemple, votre serveur d’autorisation peut contrôler les données, tâches et fonctionnalités offertes à un utilisateur." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=authorization+server">serveur d’autorisation</Tooltip> peut vérifier; ce secret s’appelle le Code Verifier. De plus, l’application appelante crée une valeur dérivée du Code Verifier appelée le Code Challenge et envoie cette valeur en HTTPS pour obtenir un code d’autorisation. Ainsi, un attaquant malveillant ne peut intercepter que le code d’autorisation et ne peut pas l’échanger contre un jeton sans le Code Verifier.

<div id="how-it-works">
  ## Fonctionnement
</div>

Comme le flux de code d’autorisation avec PKCE s’appuie sur le [flux de code d’autorisation](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow) standard, les étapes sont très similaires.

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3pstjSYx3YNSiJQnwKZvm5/33c941faf2e0c434a9ab1f0f3a06e13a/auth-sequence-auth-code-pkce.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=6c413640df1409aac6572a553bae4164" alt="Flows - Code d’autorisation avec PKCE - Diagramme de séquence d’autorisation" width="1500" height="1220" data-path="docs/images/cdy7uua7fh8z/3pstjSYx3YNSiJQnwKZvm5/33c941faf2e0c434a9ab1f0f3a06e13a/auth-sequence-auth-code-pkce.png" />
</Frame>

1. L’utilisateur clique sur **Login** dans l’application.
2. Le SDK d’Auth0 crée un `code_verifier` cryptographiquement aléatoire, puis génère à partir de celui-ci un `code_challenge`.
3. Le SDK d’Auth0 redirige l’utilisateur vers le serveur d’autorisation Auth0 (point de terminaison [`/authorize`](https://auth0.com/docs/api/authentication#authorization-code-grant-pkce-)) avec le `code_challenge`.
4. Votre serveur d’autorisation Auth0 redirige l’utilisateur vers le prompt de connexion et d’autorisation.
5. L’utilisateur s’authentifie à l’aide de l’une des options de connexion configurées et peut voir une page de consentement présentant les permissions qu’Auth0 accordera à l’application.
6. Votre serveur d’autorisation Auth0 stocke le `code_challenge` et redirige l’utilisateur vers l’application avec un `code` d’autorisation, valable pour une seule utilisation.
7. Le SDK d’Auth0 envoie ce `code` et le `code_verifier` (créé à l’étape 2) au serveur d’autorisation Auth0 `(`[point de terminaison `/oauth/token`](https://auth0.com/docs/api/authentication?http#authorization-code-flow-with-pkce44)).
8. Votre serveur d’autorisation Auth0 vérifie le `code_challenge` et le `code_verifier`.
9. Votre serveur d’autorisation Auth0 renvoie un jeton d’identité et un jeton d’accès (et, au besoin, un jeton d’actualisation).
10. Votre application peut utiliser le jeton d’accès pour effectuer une requête à une API afin d’accéder à des renseignements sur l’utilisateur.
11. L’API renvoie 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é à chaque requête et émis avec le jeton d’accès. Lorsqu’un jeton d’actualisation est échangé, le jeton d’actualisation précédent est invalidé, mais l’information sur cette relation est conservée par le serveur d’autorisation.
</Callout>

<div id="how-to-implement-it">
  ## Comment l’implémenter
</div>

La façon la plus simple d’implémenter le flux de code d’autorisation avec PKCE est de [suivre nos Quickstarts pour applications natives](/docs/fr-ca/quickstart/native) ou de [suivre nos Quickstarts pour SPA](/docs/fr-ca/quickstart/spa).

Selon votre type d’application, vous pouvez aussi utiliser nos SDK mobiles ou pour application monopage :

**Mobile**

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

**Application monopage**

* [Auth0 Single-Page App SDK](/docs/fr-ca/libraries/auth0-single-page-app-sdk)
* [Auth0 React SDK](/docs/fr-ca/libraries/auth0-react)

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les progrès récents des contrôles de confidentialité dans les navigateurs nuisent à l’expérience utilisateur en bloquant l’accès aux cookies tiers; par conséquent, les flux basés sur le navigateur 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 des jetons d’actualisation dans les SPA tout en assurant aux utilisateurs finaux un accès fluide aux ressources, sans les interruptions de l’expérience utilisateur causées par des technologies de confidentialité des navigateurs comme ITP.
</Callout>

Vous pouvez suivre nos tutoriels pour utiliser nos points de terminaison d’API afin d’[ajouter la connexion à l’aide du 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 d’[appeler votre API à l’aide du 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).

<div id="learn-more">
  ## En savoir plus
</div>

* [Auth0 Rules](/docs/fr-ca/customize/rules)
* [Auth0 Hooks](/docs/fr-ca/customize/hooks)
* [Jetons](/docs/fr-ca/secure/tokens)
* [Pratiques exemplaires pour les jetons](/docs/fr-ca/secure/tokens/token-best-practices)
* [Quel flux OAuth 2.0 devrais-je utiliser ?](/docs/fr-ca/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use)
