OAuth 2.1

Advanced Ecosystem 🟡 Mid

Définition

Révision d'OAuth 2.0 qui consolide dans une seule spécification les bonnes pratiques de sécurité accumulées depuis 2012. Encore un brouillon IETF (draft-ietf-oauth-v2-1-15 du 2 mars 2026), il rend PKCE obligatoire pour le flux Authorization Code, supprime les flux Implicit et Resource Owner Password, exige la comparaison exacte des redirect_uri, interdit les jetons bearer dans les paramètrès d'URL et impose rotation ou liaison des refresh tokens. Le protocole MCP l'a adopté pour son autorisation.

Analogie

Le code de la route réédité : pas de nouvelles routes, mais les mauvaises habitudes tolérées (rouler sans ceinture) deviennent des infractions.

Exemple de code

// Client OAuth 2.1 : Authorization Code + PKCE, même pour un backend
const verifier  = base64url(crypto.getRandomValues(new Uint8Array(32)));
const challenge = base64url(await sha256(verifier));

const authorizeUrl = new URL('https://auth.example.com/authorize');
authorizeUrl.search = new URLSearchParams({
  response_type: 'code',                 // plus de response_type=token (Implicit)
  client_id: CLIENT_ID,
  redirect_uri: 'https://app.example.com/cb', // comparée à l'octet près
  code_challenge: challenge,
  code_challenge_method: 'S256',
  state: csrfToken,
  scope: 'openid profile',
});
// Échange du code : POST /token avec code_verifier, jamais dans l'URL.

Cas d'usage

Toute nouvelle intégration OAuth (SPA, mobile, backend, agents MCP) : appliquer 2.1 dès aujourd'hui évite une migration future.

Anti-pattern

Garder un flux Password « pour l'appli mobile maison » : supprimé en 2.1, il expose le mot de passe utilisateur à l'application.
#security#authentication#standard

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre