Définition
OAuth 2.0 est un protocole d'autorisation standard qui permet à une application tierce d'accéder à des ressources protégées au nom d'un utilisateur, sans que l'utilisateur ait à partager ses identifiants.
C'est le protocole derrière le "Se connecter avec Google/GitHub/Facebook" que vous voyez partout sur le web.
Concepts clés
- Resource Owner : l'utilisateur qui possède les données
- Client : l'application qui veut accéder aux données
- Authorization Server : le serveur qui délivré les tokens (Google, Auth0, Keycloak)
- Resource Server : l'API qui protege les données
- Access Token : jeton temporaire qui autorise l'accès
- Refresh Token : jeton pour renouveler l'access token sans re-authentification
- Scopes : permissions spécifiques demandées (email, profile, repos)
Les principaux flows
Authorization Code (le plus courant et securise)
Pour les applications web server-side :
- L'utilisateur clique "Se connecter avec Google"
- Redirection vers Google avec le
client_idet lesscopes - L'utilisateur autorise l'accès
- Google redirige avec un
codetemporaire - Le serveur échange le
codecontre unaccess_token(backend-to-backend) - Le serveur utilise l'
access_tokenpour accéder à l'API Google
Authorization Code + PKCE
Pour les SPA et apps mobiles (pas de secret cote client) :
- Même flow mais avec un
code_verifieretcode_challengepour sécuriser l'échange
Client Credentials
Pour les communications machine-to-machine (pas d'utilisateur) :
- Le client s'authentifie directement avec
client_id+client_secret
Device Code
Pour les appareils sans navigateur (CLI, TV, IoT) :
- L'appareil affiche un code, l'utilisateur le saisit sur un autre appareil
OAuth 2.0 vs OpenID Connect
- OAuth 2.0 : autorisation (accès aux ressources)
- OpenID Connect (OIDC) : authentification (identité de l'utilisateur), construit au-dessus d'OAuth 2.0
OIDC ajoute un id_token (JWT) qui contient les informations d'identité de l'utilisateur.
Fournisseurs d'identité populaires
| Provider | Type | Prix |
|---|---|---|
| Auth0 | SaaS | Gratuit jusqu'à 7500 MAU |
| Keycloak | Open source | Gratuit (self-hosted) |
| Firebase Auth | SaaS | Gratuit jusqu'à 50k MAU |
| Clerk | SaaS | Gratuit jusqu'à 10k MAU |
| AWS Cognito | SaaS | Gratuit jusqu'à 50k MAU |