Docs/ Sécurité/ Authentification et 2FA

Authentification et 2FA

Sécurisez votre instance sh0 avec une connexion par mot de passe ou Google OAuth, et ajoutez une couche de protection supplémentaire avec l'authentification à deux facteurs.

Méthodes de connexion

sh0 prend en charge deux méthodes d'authentification. Les deux produisent un jeton JWT utilisé pour toutes les requêtes API et l'accès au tableau de bord.

Authentification par mot de passe

La méthode d'authentification par défaut. Lors de la première installation, sh0 crée un compte administrateur avec des identifiants par défaut affichés dans les logs du serveur. Vous devriez changer le mot de passe immédiatement après la première connexion.

Terminal
curl -X POST https://your-server:9000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "your-password"
  }'

La réponse contient un jeton JWT valide pendant 30 jours :

Response
{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "user": {
      "id": "usr_abc123",
      "email": "[email protected]",
      "role": "admin"
    }
  }
}
Page de connexion sh0 avec les champs e-mail et mot de passe

Google OAuth

Pour les utilisateurs de sh0 Cloud, la connexion Google est disponible comme méthode de connexion. Elle utilise le flux OAuth 2.0 de Google avec vérification du jeton d'identité via JWKS.

  1. Cliquez sur Se connecter avec Google sur la page de connexion.
  2. Authentifiez-vous avec votre compte Google.
  3. sh0 vérifie le jeton d'identité et crée ou lie votre compte.
Page de connexion avec le bouton Connexion Google
Note
Pour les instances auto-hébergées, l'OAuth Google nécessite la configuration d'un projet Google Cloud avec des identifiants OAuth. Consultez Paramètres → Authentification pour saisir votre Client ID et Client Secret.

Activation de l'authentification à deux facteurs

L'authentification à deux facteurs (2FA) ajoute une couche de sécurité supplémentaire en exigeant un mot de passe à usage unique basé sur le temps (TOTP) en plus de vos identifiants habituels.

  1. Accédez à Paramètres → Sécurité dans le tableau de bord.
  2. Cliquez sur Activer la 2FA.
  3. Scannez le code QR avec une application d'authentification (Google Authenticator, Authy, 1Password, etc.).
  4. Saisissez le code à 6 chiffres de votre application d'authentification pour vérifier la configuration.
  5. Sauvegardez vos codes de secours dans un emplacement sécurisé.
Écran de configuration 2FA montrant le code QR et le champ de vérification

Une fois activée, chaque connexion nécessitera le code TOTP à 6 chiffres après la saisie de votre e-mail et mot de passe.

Terminal
curl -X POST https://your-server:9000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "your-password",
    "totp_code": "123456"
  }'
Warning
Si vous perdez l'accès à votre application d'authentification et à vos codes de secours, vous devrez accéder directement au serveur et réinitialiser la 2FA via le CLI : sh0 auth reset-2fa --email [email protected]

Codes de secours

Lorsque vous activez la 2FA, sh0 génère 10 codes de secours à usage unique. Chaque code peut être utilisé une fois à la place d'un code TOTP si vous perdez l'accès à votre application d'authentification.

Example Backup Codes
a1b2c3d4e5
f6g7h8i9j0
k1l2m3n4o5
p6q7r8s9t0
u1v2w3x4y5
z6a7b8c9d0
e1f2g3h4i5
j6k7l8m9n0
o1p2q3r4s5
t6u7v8w9x0
Danger
Stockez vos codes de secours dans un emplacement sécurisé et hors ligne (gestionnaire de mots de passe, papier imprimé dans un coffre). Ces codes sont votre seule méthode de récupération si vous perdez votre appareil d'authentification. Ils ne sont affichés qu'une seule fois lors de la configuration 2FA.

Vous pouvez régénérer les codes de secours à tout moment depuis Paramètres → Sécurité → Régénérer les codes de secours. Cela invalide tous les codes précédemment générés.

Changement de mot de passe

Pour changer votre mot de passe :

  1. Allez dans Paramètres → Profil.
  2. Cliquez sur Changer le mot de passe.
  3. Saisissez votre mot de passe actuel et votre nouveau mot de passe.
  4. Si la 2FA est activée, vous serez invité à saisir un code TOTP.
Formulaire de changement de mot de passe dans les paramètres du profil

Les mots de passe sont hachés avec Argon2id avant le stockage. sh0 impose une longueur minimale de mot de passe de 8 caractères.

Tip
Après avoir changé votre mot de passe, toutes les sessions existantes restent valides. Pour invalider toutes les sessions, utilisez le bouton Révoquer toutes les sessions dans les paramètres de sécurité.

Gestion des sessions

sh0 utilise des jetons JWT pour la gestion des sessions. Les jetons sont valides pendant 30 jours par défaut. Vous pouvez consulter et gérer les sessions actives depuis le tableau de bord.

Liste des sessions actives montrant le navigateur, l'emplacement et la dernière activité

Depuis le panneau Sessions, vous pouvez :

  • Voir les sessions actives : Voir tous les appareils et navigateurs où vous êtes connecté.
  • Révoquer une session : Invalider une session spécifique (par ex., si vous êtes resté connecté sur un ordinateur partagé).
  • Révoquer toutes les sessions : Se déconnecter partout. Utile si vous suspectez que vos identifiants ont été compromis.
Terminal
curl -X DELETE https://your-server:9000/api/auth/sessions \
  -H "Authorization: Bearer YOUR_TOKEN"