Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

OAuth 2.0

general

Définition

OAuth 2.0 est un framework d'autorisation standard (RFC 6749) qui permet à des applications tierces d'obtenir un accès limité aux ressources d'un utilisateur sur un service HTTP, sans que l'utilisateur ne partage ses identifiants. OAuth 2.0 délègue la décision d'accès à l'utilisateur, qui autorise explicitement l'application à accéder à certaines de ses données. La distinction fondamentale entre OAuth 2.0 et les protocoles d'authentification est critique : OAuth 2.0 est un protocole d'autorisation (qui peut faire quoi ?), pas d'authentification (qui est-ce ?). Pour l'authentification, OpenID Connect (OIDC) est construit au-dessus d'OAuth 2.0. Confondre les deux est une source fréquente de vulnérabilités de sécurité. OAuth 2.0 définit plusieurs flows (Grant Types) adaptés à différents scénarios. Le Authorization Code Flow (avec PKCE pour les clients publics) est le flux le plus sécurisé pour les applications web et mobiles : l'utilisateur est redirigé vers le serveur d'autorisation, s'authentifie, autorise l'application, et reçoit un code d'autorisation échangeable contre un access token. Le Client Credentials Flow est utilisé pour les communications machine-à-machine (M2M) sans intervention humaine, avec des credentials clients directement. L'Implicit Flow (maintenant déprécié) exposait les tokens dans l'URL — ne plus utiliser. Les scopes OAuth définissent la granularité des permissions accordées : "read:user", "repo:write", "calendar:read" sont des exemples de scopes GitHub et Google qui permettent aux utilisateurs d'accorder des accès précis sans révéler tous leurs droits. Cette granularité est fondamentale pour le principe du moindre privilège dans les intégrations de services. Les access tokens OAuth 2.0 sont soit des tokens opaques (chaînes aléatoires que le serveur de ressources vérifie via introspection) soit des JWT auto-descriptifs (contenant les informations d'identité et de permissions directement, vérifiables sans appel réseau). Les refresh tokens permettent d'obtenir de nouveaux access tokens sans ré-authentification, avec une durée de vie plus longue. Parmi les vulnérabilités OAuth courantes : le vol de tokens via des redirections ouvertes (open redirect), les attaques CSRF sur le paramètre state, les problèmes de validation du redirect_uri, et les abus de tokens JWT mal validés. PKCE (Proof Key for Code Exchange, RFC 7636) est maintenant obligatoire pour tous les clients publics afin de prévenir les attaques d'interception du code d'autorisation.

PKCE — sécurisation du Authorization Code Flow

PKCE (RFC 7636) protège le Authorization Code Flow contre l'interception du code d'autorisation. L'application génère un code_verifier aléatoire, calcule son hash (code_challenge = SHA256(code_verifier)), et l'inclut dans la requête d'autorisation. Le serveur d'autorisation associe ce challenge au code émis. Lors de l'échange du code contre le token, l'application fournit le code_verifier original — le serveur vérifie que son hash correspond au challenge stocké. Un attaquant qui intercepte le code d'autorisation ne peut pas l'échanger sans connaître le code_verifier. PKCE était initialement conçu pour les apps mobiles (clients publics) mais est maintenant recommandé pour tous les clients OAuth 2.1.

OAuth 2.0 pour les API M2M — Client Credentials

Le Client Credentials Flow est le pattern standard pour les communications API machine-à-machine : un microservice authentifie son identité auprès du serveur d'autorisation avec son client_id et client_secret, et reçoit un access token avec les scopes accordés à ce service. Ce token est utilisé pour appeler les APIs des autres services. La rotation des client secrets, le stockage sécurisé (variables d'environnement chiffrées, Vault), et la limite des scopes au minimum nécessaire sont les bonnes pratiques. Dans Kubernetes, les Workload Identity (utilisant les OIDC tokens des service accounts Kubernetes) remplacent avantageusement les client secrets statiques pour l'authentification vers les APIs cloud (AWS, GCP, Azure).

Vulnérabilités OAuth courantes — OWASP et protections

Les Top 10 vulnerabilités OAuth identifiées par l'OWASP OAuth Security Workshop incluent : (1) State parameter manquant ou prévisible → attaques CSRF ; (2) redirect_uri validation trop permissive → exfiltration de tokens ; (3) PKCE non implémenté → interception du code ; (4) Token leakage via referrer header ou logs ; (5) Scope validation insuffisante → privilege escalation ; (6) Confusion IdP (multiple IdPs avec même email) ; (7) Sub claim non validé → identity confusion. Les audits de sécurité des applications OAuth/OIDC doivent systématiquement tester ces vecteurs. Les frameworks OAuth certifiés (Auth0, Okta, Keycloak) implémentent les protections par défaut.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis