Aperçu
Concepts clés
- Découvrez le type d’octroi OAuth 2.0 Authorization Code Flow with Proof Key for Code Exchange (PKCE).
- Utilisez ce type d’octroi pour les applications qui ne peuvent pas stocker de secret client, comme les applications natives ou monopage.
- Découvrez différentes méthodes d’implémentation avec les SDK Auth0.
- Ne peuvent pas stocker de façon sécurisée un . La décompilation de l’application révélera le , qui est associé à l’application et est le même pour tous les utilisateurs et appareils.
- Sont vulnérables aux attaques d’interception et d’injection de 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’URL personnalisé pour intercepter les redirections (par ex., MyApp://), ce qui pourrait permettre à des applications malveillantes de recevoir un de votre . 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.
- Ne peuvent pas stocker de façon sécurisée un Secret client parce que l’intégralité de leur code source est accessible dans le navigateur.
Fonctionnement

- L’utilisateur clique sur Connexion dans l’application.
- Le SDK d’Auth0 crée un
code_verifieraléatoire sur le plan cryptographique et génère à partir de celui-ci uncode_challenge. - Le SDK d’Auth0 redirige l’utilisateur vers le serveur d’autorisation Auth0 (point de terminaison
/authorize) avec lecode_challenge. - Votre serveur d’autorisation Auth0 redirige l’utilisateur vers l’invite de connexion et d’autorisation.
- L’utilisateur s’authentifie à l’aide de l’une des options de connexion configurées et peut voir une page de consentement qui énumère les autorisations qu’Auth0 accordera à l’application.
- Votre serveur d’autorisation Auth0 stocke le
code_challengeet redirige l’utilisateur vers l’application avec uncoded’autorisation, valable pour une seule utilisation. - Le SDK d’Auth0 envoie ce
codeet lecode_verifier(créé à l’étape 2) au serveur d’autorisation Auth0(/oauth/tokenpoint de terminaison). - Votre serveur d’autorisation Auth0 vérifie le
code_challengeet lecode_verifier. - Votre serveur d’autorisation Auth0 répond avec un jeton d’identité et un jeton d’accès (et, facultativement, un jeton d’actualisation).
- Votre application peut utiliser le jeton d’accès pour appeler une API afin d’accéder à des renseignements sur l’utilisateur.
- L’API renvoie les données demandées.
Si la rotation des Jetons d’actualisation 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.
Comment le mettre en œuvre
Les récentes avancées en matière de protection de la vie privée dans les navigateurs nuisent à l’expérience utilisateur en empêchant l’accès aux témoins tiers; par conséquent, les flux basés sur le navigateur doivent utiliser la rotation des jetons d’actualisation, qui offre une méthode sécurisée pour utiliser des jetons d’actualisation dans les SPA tout en fournissant aux utilisateurs finaux un accès fluide aux ressources, sans les perturbations de l’expérience utilisateur causées par des technologies de protection de la vie privée des navigateurs comme ITP.