Definition
OAuth 2.0 est un protocole d'autorisation standard qui permet a une application tierce d'acceder a des ressources protegees au nom d'un utilisateur, sans que l'utilisateur ait a partager ses identifiants.
C'est le protocole derriere le "Se connecter avec Google/GitHub/Facebook" que vous voyez partout sur le web.
Concepts cles
- Resource Owner : l'utilisateur qui possede les donnees
- Client : l'application qui veut acceder aux donnees
- Authorization Server : le serveur qui delivre les tokens (Google, Auth0, Keycloak)
- Resource Server : l'API qui protege les donnees
- Access Token : jeton temporaire qui autorise l'acces
- Refresh Token : jeton pour renouveler l'access token sans re-authentification
- Scopes : permissions specifiques demandees (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'acces
- Google redirige avec un
codetemporaire - Le serveur echange le
codecontre unaccess_token(backend-to-backend) - Le serveur utilise l'
access_tokenpour acceder a l'API Google
Authorization Code + PKCE
Pour les SPA et apps mobiles (pas de secret cote client) :
- Meme flow mais avec un
code_verifieretcode_challengepour securiser l'echange
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 (acces aux ressources)
- OpenID Connect (OIDC) : authentification (identite de l'utilisateur), construit au-dessus d'OAuth 2.0
OIDC ajoute un id_token (JWT) qui contient les informations d'identite de l'utilisateur.
Fournisseurs d'identite populaires
| Provider | Type | Prix |
|---|---|---|
| Auth0 | SaaS | Gratuit jusqu'a 7500 MAU |
| Keycloak | Open source | Gratuit (self-hosted) |
| Firebase Auth | SaaS | Gratuit jusqu'a 50k MAU |
| Clerk | SaaS | Gratuit jusqu'a 10k MAU |
| AWS Cognito | SaaS | Gratuit jusqu'a 50k MAU |