Authentification & sessions
Connexion, hachage des mots de passe, sessions révocables et cookies.
Connexion
L'authentification se fait par e-mail + mot de passe. Pour éviter l'énumération de comptes, toute erreur (utilisateur inconnu ou mot de passe incorrect) renvoie le même message générique.
Un compte peut être verrouillé temporairement (protection contre le bourrinage) et un compte désactivé ne peut pas se connecter.
Hachage des mots de passe
Les mots de passe sont hachés avec scrypt (fonction de dérivation résistante au matériel), avec un sel aléatoire par utilisateur et une comparaison à temps constant lors de la vérification. Les paramètres de coût sont stockés avec le hachage, ce qui permet de les renforcer progressivement.
Avant la production : relever le facteur de coût scrypt aux recommandations OWASP en vigueur. Le réglage de développement est volontairement plus léger.
Longueur minimale du mot de passe : 10 caractères (à l'invitation et au changement).
Double authentification (MFA)
Chaque compte peut activer la vérification en deux étapes par code TOTP (application d'authentification). Lorsqu'elle est active, un code à 6 chiffres est exigé après l'e-mail et le mot de passe, et la session n'est ouverte qu'une fois ce code validé. Voir Double authentification (MFA).
Sessions
Revault utilise des sessions stockées côté serveur, référencées par un jeton JWT minimal :
- chaque connexion crée une session en base, avec une durée de vie de 8 heures ;
- le JWT ne contient qu'un identifiant de session opaque — aucun identifiant d'utilisateur ou de client n'y est exposé ;
- les sessions sont révocables instantanément (déconnexion, changement de mot de passe) sans attendre l'expiration du jeton ;
- chaque requête met à jour l'activité et l'IP de la session.
Bascule de client (MSP)
Un utilisateur ayant accès à plusieurs clients peut changer de client actif sans se reconnecter : la session est mise à jour et toutes les requêtes suivantes sont filtrées sur le nouveau client.
Cookies
Le cookie de session est :
| Attribut | Valeur | Effet |
|---|---|---|
HttpOnly | oui | Inaccessible au JavaScript (mitige le vol par XSS). |
Secure | oui (HTTPS) | Transmis uniquement en HTTPS. |
SameSite | Lax | Mitige les attaques CSRF. |
| Durée | 8 h | Aligne le cookie sur la session. |
Une alternative Authorization: Bearer <token> est acceptée pour les appels
programmatiques.
Invitations & onboarding
L'accès se fait par invitation : un lien à usage unique, valable 7 jours, permet au destinataire de rejoindre un client avec un rôle donné et de définir son mot de passe. L'onboarding d'un nouveau client suit le même principe pour son premier administrateur. Voir Équipe & accès.