OAuth2 PKCE

Advanced Ecosystem 🟡 Mid

Definition

Extension OAuth2 (Proof Key for Code Exchange) qui protège le flow Authorization Code contre l'interception. Utilise un code_verifier et code_challenge.

Analogie

Envoyer un cadenas ouvert avec la demande, puis prouver qu'on a la clé en l'ouvrant lors de l'échange.

Exemple de code

const verifier = generateRandomString(128);
const challenge = base64url(sha256(verifier));
// Step 1: Send challenge
`&code_challenge=${challenge}&code_challenge_method=S256`
// Step 2: Send verifier to get token
`&code_verifier=${verifier}`

Cas d'usage

Sécuriser le flow OAuth2 dans les SPA et apps mobiles qui ne peuvent pas garder un client_secret.

Anti-pattern

Utiliser le flow Implicit ou Authorization Code sans PKCE dans une application publique (SPA, mobile).

Termes lies

#security#authentication