Sur un projet .NET / React, la question revient toujours :
JWT, cookies, OAuth2, IdentityServer, Auth0… on prend quoi ?
Voici ma grille de décision simple, basée sur les cas réels.
JWT “classique” (SPA + API)
✔️ Quand je l’utilise
- SPA React + API .NET indépendante
- Besoin d’un backend stateless
- Authentification via formulaire maison ou OAuth provider
🔹 Avantages
- Simple à mettre en place
- Scalable
- Compatible mobile / front variés
🔹 Points d’attention
- Stockage côté client (cookies HttpOnly recommandés)
- Rotation / invalidation des tokens
Cookies + session
✔️ Quand c’est adapté
- Application full server-side
- Intranet / back-office
- Peu de front SPA
🔹 Avantages
- Implémentation native dans ASP.NET
- CSRF bien géré avec les bons patterns
🔹 Limites
- Moins pratique pour des clients multiples (mobile, SPA…)
OAuth2 / OpenID Connect (Google, Azure AD…)
✔️ Mon choix par défaut si :
- On veut du SSO,
- On évite de gérer les mots de passe,
- Contexte entreprise (Azure AD, Entra ID).
Je couple souvent :
- Login via provider (Google / Azure AD),
- Génération d’un JWT interne pour l’API,
- Gestion des rôles côté base.
Recommandation rapide
- Petit projet SPA public : Formulaire + JWT + cookies HttpOnly.
- App métier d’entreprise : OpenID Connect (Azure AD) + JWT.
- Site vitrine / admin classique : cookies + auth server-side.
L’important n’est pas de “faire fancy”, mais d’adapter le schéma à la surface d’attaque réelle et à l’équipe qui maintient.