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.