Anaïs Sparesotto
Sécurité · AuthAvancé≈ 2h30 · 8 chapitres

Authentification sécurisée et gestion des utilisateur·ices

Hash de mots de passe, sessions vs JWT, OAuth, magic links, passkeys, MFA, reset password. Pour implémenter une auth qui ne fuite pas.

À la fin du cours, tu sais

  • Savoir quand utiliser une lib d'auth plutôt que coder soi-même
  • Hasher correctement un mot de passe (argon2id / bcrypt)
  • Choisir entre sessions serveur et JWT, et le bon cookie
  • Mettre en place OAuth2 + PKCE pour Sign in with Google/GitHub
  • Comprendre les passkeys et la sortie du mot de passe
  • Implémenter MFA, password reset et rate limiting sans faille

Prérequis

  • Connaître Node.js / Express ou équivalent
  • Avoir suivi le cours OWASP Top 10 (ou notions équivalentes)
  • Comprendre cookies, HTTPS, headers HTTP
Chapitre 11 / 11

Étape 1 sur 11 : Pourquoi tu ne devrais (presque) jamais coder l'auth de zéro

Chapitre 1

Pourquoi tu ne devrais (presque) jamais coder l'auth de zéro

L'authentification est le composant le plus attaqué de ton app. Une faille = fuite, RGPD, réputation. Le réflexe par défaut : ne pas coder soi-même.

Commençons ce cours par un conseil qui peut sembler paradoxal de la part d'un cours technique : dans la plupart des cas, tu ne devrais pas coder ton authentification de zéro. L'auth est le composant le plus attaqué de toute application, parce que c'est la porte d'entrée : la forcer donne accès à tout le reste. Une seule faille, et c'est une fuite de données, une notification à la CNIL au titre du RGPD, et une réputation entamée. Face à un tel enjeu, la sagesse consiste à s'appuyer sur du code éprouvé par des milliers d'yeux plutôt que sur le sien.

La raison est que la surface d'attaque est immense, bien plus large qu'on ne l'imagine. Il ne s'agit pas seulement de « vérifier un mot de passe » : il faut se prémunir contre le credential stuffing (réutilisation de mots de passe fuités ailleurs), le brute force, le vol de session par XSS ou CSRF, l'énumération de comptes, les attaques sur la réinitialisation de mot de passe, les race conditions sur le second facteur… Chacun de ces vecteurs a ses subtilités, et en oublier un seul suffit à tout compromettre. C'est précisément le genre de problème que des bibliothèques spécialisées ont déjà résolu, testé et maintenu.

Selon ton besoin, plusieurs options existent : des bibliothèques open source qui gardent le code dans ton dépôt (Lucia, Auth.js), ou des services managés qui externalisent tout (Clerk, WorkOS, Supabase Auth). Ce cours ne te pousse pas à réinventer la roue, mais à comprendre ce qui se passe sous le capot de ces outils — car même en les utilisant, tu dois savoir configurer un cookie correctement, choisir un flux OAuth, ou juger si une implémentation est saine. Et si tu dois vraiment coder l'auth toi-même, suis a minima le standard OWASP ASVS niveau 2, la checklist de référence. Les chapitres suivants te donnent ces fondations.

La surface d'attaque est énorme

  • Credential stuffing (réutilisation de mots de passe leakés)
  • Brute force sur le login
  • Vol de session (XSS, CSRF, session fixation)
  • Énumération de comptes (différentes réponses selon que l'email existe)
  • Attaques sur le password reset (token réutilisable, devinable)
  • Race conditions sur les MFA

Libs et services à considérer

  • Lucia : lib auth open source, contrôle total, code dans ton repo
  • Auth.js (ex NextAuth) : standard de l'écosystème Next.js, multi-providers
  • Clerk / WorkOS / Supabase Auth : services managés, prêts à l'emploi
  • Keycloak / ZITADEL : auth self-hosted entreprise

Si tu codes l'auth toi-même

Suis a minima le standard OWASP ASVS niveau 2 (Application Security Verification Standard). C'est la checklist de référence. Le reste de ce cours te donne les bases, mais l'ASVS est plus exhaustif et tenu à jour.

Pour aller plus loin

Tu veux ce cours pour ton équipe ?

Je peux adapter et animer ce cours pour tes formateur·ices ou tes apprenant·es, en présentiel ou en distanciel. Parlons-en pendant l'audit gratuit.

Réserver un audit gratuit →