internal/auth
Une authentification faite correctement
Tous les parcours qu'exige un vrai produit, et les cas d'échec traités : énumération, rejeu, limitation de débit, invalidation des sessions.
- Email et mot de passe hachés en argon2id (64 Mio, 3 itérations)
- Vérification d'email, réinitialisation, et un lien magique qui sert aussi d'inscription sans mot de passe
- Google, GitHub, Microsoft Entra ID, et n'importe quel fournisseur OIDC par découverte
- Double facteur TOTP : enrôlement par QR code, dix codes de secours à usage unique, exigé sur tous les chemins de connexion
- Réponses neutres partout — inscription, connexion et réinitialisation ne révèlent jamais l'existence d'un compte
- Limitation de débit par IP et par compte ; un changement de mot de passe termine toutes les autres sessions
- Jetons à usage unique stockés en SHA-256, avec une durée de vie propre à chaque usage
- OAuth ne fusionne jamais un compte en silence : une collision d'email exige un rattachement explicite