Fait avec Chinaski

Authentification

Authentification

Connexion à Chinaski, fonctionnement des sessions et ce qu'il faut pour en invalider une. Tout ce qui suit concerne l'application admin ; l'accès API par les machines est un mécanisme distinct signalé à la fin. (Cette page se limite à la connexion et aux sessions ; le modèle de permissions a sa propre page.)

Connexion

Vous vous connectez avec un nom d'utilisateur et un mot de passe sur l'écran de connexion. Quelques points travaillent en coulisses :

  • Les soumissions vides sont rejetées avant toute autre chose.
  • Les vérifications de mot de passe prennent le même temps que le nom d'utilisateur existe ou non, si bien que le site ne laisse jamais deviner quels comptes sont réels.
  • Un compte suspendu est refoulé avec le même message générique (la suspension est immédiate ; voir ci-dessous).
  • Chaque connexion réussie crée une session neuve de toutes pièces (rien ne se reporte de la session précédente) et la connexion est enregistrée dans l'historique de connexions que les admins peuvent consulter.

Si vous cochez Remember me, la session dure 30 jours au lieu des 8 heures habituels.

Lockouts

Échouer plusieurs fois à se connecter depuis la même adresse IP déclenche des lockouts croissants :

  • 5 échecs consécutifs → lockout de 60 secondes
  • 10 → 5 minutes
  • 20 → 30 minutes

Pendant un lockout, toute nouvelle tentative est rejetée sèchement et le temps d'attente restant est affiché. Les compteurs survivent aux redémarrages et se réinitialisent après 10 minutes d'inactivité. Ces seuils sont fixes : ils ne peuvent pas être modifiés dans la zone admin. Ce que les admins peuvent configurer (Settings → Security, seuil d'échecs) est une alerte distincte : lorsque les tentatives échouées ou bloquées dans une fenêtre quelconque de 10 minutes atteignent ce nombre, un avertissement est consigné dans le journal d'événements.

Sessions

Une session est ancrée à deux endroits à la fois : un cookie signé, sécurisé, HttpOnly, et un enregistrement de session côté serveur contenant un token de session aléatoire haché, une adresse IP, un identifiant de navigateur et une expiration.

Comme le serveur conserve un enregistrement, les sessions sont validées à chaque requête : pas seulement à la connexion :

  • Les changements de rôle prennent effet immédiatement. Votre rôle est relu de l'enregistrement du compte à chaque requête, donc une rétrogradation ou une promotion ne nécessite pas de reconnexion.
  • Supprimer un compte met fin à ses sessions immédiatement.
  • Un token expiré ou révoqué met fin à la session sur-le-champ avec « Your session has been revoked. »
  • Les sessions expirent d'elles-mêmes après 8 heures (ou 30 jours avec Remember me). Les sessions SSO font toujours 8 heures.
  • Tous les formulaires admin incluent une protection CSRF, si bien que des liens ou des pages tierces ne peuvent pas soumettre d'actions de contenu en votre nom.

Déconnexion et invalidation de sessions

  • Sign out termine la session courante : l'enregistrement côté serveur est supprimé et le cookie expire aussitôt. La page de déconnexion fonctionne même lorsque vous êtes déjà déconnecté, elle ne mène donc jamais dans une impasse.
  • Log out everywhere (votre page de compte) invalide chaque session sauf celle que vous utilisez en ce moment, de sorte que vous n'êtes pas éjecté de votre propre onglet courant ; les autres appareils et navigateurs sont déconnectés.
  • La suspension (action admin) invalide immédiatement les sessions de cet utilisateur ; elle n'attend pas sa prochaine connexion.
  • Changer le mot de passe de quelqu'un (action admin) supprime aussi toutes ses sessions, de sorte que le nouveau mot de passe prenne effet à la prochaine connexion.

Expiration des mots de passe

Si l'expiration des mots de passe est configurée (Settings → Security), la vérification a lieu à la connexion : lorsque votre mot de passe est plus ancien que le nombre de jours configuré, vous êtes dirigé directement vers la page de changement de mot de passe avec un avis. Tant que vous ne l'avez pas changé, toute autre page admin vous y renvoie ; les seules pages qui restent accessibles sont le changement de mot de passe lui-même et la déconnexion.

Rôles et portes d'accès

Ce qu'un utilisateur connecté peut faire est régi par le système de permissions, voir la page Permissions. La même porte qui vérifie les permissions revalide aussi la session à chaque fois, de sorte que la révocation d'un accès a toujours lieu à la requête suivante plutôt qu'à une reconnexion ultérieure.

Réinitialisations de mot de passe

Les tokens de réinitialisation de mot de passe (lorsque configurés) expirent tous au bout de 7 jours au plus tard ; les tokens utilisés ou expirés sont nettoyés automatiquement. À la place, un admin peut vous définir directement un nouveau mot de passe ; cela invalide aussi vos sessions immédiatement.

Accès machine (API)

Les requêtes envoyées avec un en-tête de clé API contournent entièrement la session navigateur : elles sont authentifiées par la clé à la place, et l'en-tête doit présenter la permission write pour toute requête modifiant du contenu. Les clés en lecture seule ont accès à la récupération ; l'exemption CSRF ne s'applique qu'à ces requêtes avec clé API, jamais aux sessions navigateur.

Premier démarrage

Une installation neuve crée un compte admin avec un mot de passe placeholder et redirige toutes les requêtes vers une page de configuration initiale jusqu'à ce qu'un vrai mot de passe soit défini. Une fois un mot de passe défini (12+ caractères avec majuscule, minuscule et chiffre), la page de configuration disparaît pour de bon.

Lisez ce site en