OAuth 2.0 : le standard d'autorisation du web moderne
OAuth 2.0 est un protocole d'autorisation qui permet à une application tierce d'obtenir un accès limite aux ressources d'un utilisateur sur un service, sans que l'utilisateur n'ait à partager ses identifiants. C'est le protocole utilise quand vous cliquez "Se connecter avec Google" ou "Autoriser cette application".
Les rôles dans OAuth 2.0
- Resource Owner : l'utilisateur qui possède les données (vous)
- Client : l'application qui veut accéder aux données (une app tierce)
- Authorization Server : le serveur qui authentifie l'utilisateur et délivré les tokens (Google, GitHub, etc.)
- Resource Server : le serveur qui heberge les données protégées (l'API)
Les flux d'autorisation (Grant Types)
Authorization Code : le flux le plus securise, recommande pour les applications web avec un backend. L'utilisateur est redirige vers le serveur d'autorisation, s'authentifie, puis un code est échange contre un token cote serveur.
Authorization Code + PKCE : extension du flux précédent pour les applications mobiles et SPA. PKCE (Proof Key for Code Exchange) ajoute une vérification cryptographique pour prévenir l'interception du code.
Client Credentials : pour la communication machine-to-machine, sans utilisateur implique. Le client s'authentifie directement avec son ID et son secret.
Device Code : pour les appareils sans navigateur (TV, CLI). L'utilisateur s'authentifie sur un autre appareil en entrant un code affiche a l'écran.
Les tokens
- Access Token : token a courte durée de vie (minutes/heures) qui autorise l'accès aux ressources. Souvent au format JWT.
- Refresh Token : token a longue durée de vie utilise pour obtenir un nouvel access token sans re-authentification. Doit être stocke de manière sécurisée.
Les scopes
Les scopes définissent le périmètre d'accès demande. Par exemple, une application peut demander le scope "read:email" pour lire l'email mais pas "write:profile" pour modifier le profil. L'utilisateur voit et approuve les scopes demandes.
OAuth 2.0 vs OpenID Connect
OAuth 2.0 gere l'autorisation (ce que vous pouvez faire). OpenID Connect (OIDC) est une couche d'identité construite au-dessus d'OAuth 2.0 qui gere l'authentification (qui vous êtes). OIDC ajoute un ID Token contenant les informations de l'utilisateur.
Sécurité et bonnes pratiques
- Toujours utiliser HTTPS : les tokens transitent en clair dans les headers
- Valider les tokens cote serveur : vérifier la signature, l'expiration, l'audience
- Utiliser des scopes minimaux : principe du moindre privilege
- Stocker les refresh tokens de manière sécurisée : jamais dans le localStorage
- Implémenter la rotation des refresh tokens : chaque utilisation genere un nouveau token