Générateur PKCE

Générer code_verifier et code_challenge PKCE pour OAuth 2.0

info

PKCE pour OAuth 2.0 / OIDC

PKCE (Proof Key for Code Exchange) est utilisé dans les flux de code d'autorisation OAuth 2.0 / OIDC pour sécuriser l'échange, notamment pour les clients publics comme les SPA ou les applications mobiles.
Méthode de challenge
128 caractères
43 128
data_object

Utilisation dans un flux OAuth

GET /authorize? response_type=code& client_id=...& code_challenge=......& code_challenge_method=S256
POST /token grant_type=authorization_code& code=...& client_id=...& code_verifier=......
Comprendre PKCE (Proof Key for Code Exchange)
TL;DR

PKCE (prononce 'pixy') est une extension de securite pour le flux Authorization Code d'OAuth 2.0. Il empeche les attaques par interception du code d'autorisation en liant la requete d'autorisation a la requete de jeton a l'aide d'une paire cryptographique composee d'un code verifier et d'un code challenge.

Qu’est-ce que PKCE ?

PKCE (Proof Key for Code Exchange, RFC 7636) est un mecanisme de securite concu pour proteger le flux Authorization Code d’OAuth 2.0 contre les attaques par interception du code d’autorisation. Il est particulierement critique pour les clients publics — des applications telles que les applications mobiles et les applications monopage qui ne peuvent pas stocker un secret client de maniere securisee.

Sans PKCE, une application malveillante sur le meme appareil pourrait intercepter le code d’autorisation renvoye par le fournisseur d’identite et l’echanger contre un jeton d’acces. PKCE empeche cela en garantissant que seule l’application qui a initie la requete d’autorisation puisse completer l’echange de jeton.

Comment fonctionne PKCE

Le flux PKCE ajoute deux parametres au flux Authorization Code standard :

1. Avant la requete d’autorisation

Le client genere une chaine aleatoire appelee code_verifier (43 a 128 caracteres, utilisant des caracteres URI non reserves). Il en derive ensuite un code_challenge :

  • Methode S256 : code_challenge = BASE64URL(SHA256(code_verifier))
  • Methode plain : code_challenge = code_verifier (non recommandee)

2. Requete d’autorisation

Le client envoie le code_challenge et la code_challenge_method (S256 ou plain) au serveur d’autorisation avec les parametres standard de la requete d’autorisation.

3. Requete de jeton

Apres avoir recu le code d’autorisation, le client envoie le code_verifier original (et non le challenge) au point de terminaison de jeton. Le serveur calcule le challenge a partir du verifier et le compare a celui recu lors de l’autorisation. S’ils correspondent, le jeton est emis.

Cela garantit que meme si un attaquant intercepte le code d’autorisation, il ne peut pas l’echanger sans le code_verifier original.

Exigences du code verifier

ProprieteExigence
Longueur43 a 128 caracteres
Jeu de caracteres[A-Z], [a-z], [0-9], -, ., _, ~
EntropieDoit etre cryptographiquement aleatoire

Cas d’utilisation courants

  • Applications monopage (SPA) : les applications JavaScript executees dans le navigateur ne peuvent pas dissimuler un client_secret, rendant PKCE indispensable
  • Applications mobiles : les applications natives sur iOS et Android utilisent PKCE avec des schemas d’URL personnalises ou des liens universels
  • Outils en ligne de commande : les applications en ligne de commande utilisant le flux Authorization Code beneficient de PKCE pour un echange de jetons securise
  • Clients confidentiels : meme les applications cote serveur devraient utiliser PKCE comme defense en profondeur conformement aux recommandations d’OAuth 2.1

Essayez ces exemples

Generer une nouvelle paire PKCE Valide

Cliquez pour generer une nouvelle paire code_verifier et code_challenge en utilisant la methode recommandee S256.

generate
Methode plain (non recommandee) Invalide

La methode plain envoie le verifier tel quel sans hachage, ce qui est moins securise. Utilisez S256 chaque fois que possible.

plain

Flux OIDC Authorization Code avec PKCE

Étape 1 sur 8
language Agent Utilisateur
devices Client (SPA)
lock Serveur d'Autorisation
dns Serveur de Ressources
code_verifier = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
SHA256(code_verifier)
code_challenge = "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"
code_challenge_method = "S256"
1

Génération PKCE

L'application cliente génère une chaîne aléatoire cryptographiquement sûre appelée code_verifier (43-128 caractères, URL-safe). Elle calcule ensuite le code_challenge en appliquant un hachage SHA-256 suivi d'un encodage base64url sur le verifier. Le verifier est conservé en mémoire de façon sécurisée — il sera nécessaire plus tard pour prouver l'identité du client. C'est le cœur de PKCE : même si un attaquant intercepte le code d'autorisation, il ne peut pas l'échanger sans le verifier original.

Étape 1 sur 8