corentin_wakdo/docs/domaines/auth.md
Corentin JOGUET 32f9baacce
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 20s
CI / static-tests (push) Successful in 41s
CI / js-tests (push) Successful in 19s
CI / auto-merge (push) Has been skipped
docs(domaines): documentation par domaine fonctionnel (7 fiches) (#44)
2026-06-17 15:55:30 +02:00

1.4 KiB

Domaine — Authentification & sessions

Perimetre

Connexion back-office, deconnexion, reinitialisation de mot de passe, garde de session, PIN d'action sensible. Pas d'auth cote borne (front public).

Ce qui est livre

  • App\Auth\AuthService (login 12.1 / logout 12.2), PasswordResetService (12.3).
  • SessionManager (seul a toucher $_SESSION/cookie, mode test memoire), SessionGuard (RG-6/RG-T02 : idle 4h, absolu 10h, is_active), Csrf (jeton synchroniseur).
  • PasswordHasher (argon2id + leurre de timing), PinVerifier, PinThrottle, ThrottlePolicy (backoff degressif).
  • Controleurs AuthController, PasswordResetController, ProfileController (set-PIN self-service), MeController (/api/me).

Regles metier

  • RG-6 / RG-T02 : session valide (idle + absolu + compte actif) sinon 302 /login.
  • RG-8 / RG-9 : throttle login par compte + par IP (login_throttle), backoff degressif.
  • RG-T13 : PIN d'action sensible (voir users, rbac, stock).
  • Anti-enumeration : reponses neutres (reset, login) ; leurre de timing argon2id.

Decisions

ADR-0001 (from scratch), ADR-0004 (PIN), ADR-0005 (throttle PIN).

Tables

user, login_throttle, pin_throttle, audit_log (login + pin.failed). Detail : docs/merise/mlt.md section 12 + 22.