03 · chantier

Identité maison — passage à Authentik (WebAuthn / YubiKey / TOTP)

Année: 2026 Domaines: identity · security · ux Cible: Raspberry Pi 5
3facteurs forts
0mot de passe en clair
SSOmulti-utilisateur

Contexte

L'authentification de la grappe reposait sur Authelia. Très bien pour un usage solo, mais l'arrivée d'un deuxième utilisateur sur certaines applications (proches, accès limité) demandait un vrai plan d'identité : groupes, droits par application, politique de facteur, écran de login soigné.

Contrainte

Trois exigences non négociables :

  1. WebAuthn / YubiKey en facteur principal pour mon propre compte ; TOTP en secondaire pour les autres.
  2. Un écran de connexion qui ne ressemble pas à l'écran générique d'Authentik. Le login est la première impression du domaine — il porte la même attention que le reste du site.
  3. Le bon relying party WebAuthn : mylastnight.eu (eTLD+1) plutôt qu'un sous-domaine, pour que les passkeys couvrent toutes les apps.

Décision

Migration vers Authentik. Quatre containers : authentik-server, authentik-worker, authentik-db (Postgres), authentik-redis. NPM délègue l'auth via le forward-auth pattern pour les apps qui ne parlent pas OIDC.

Pour le login custom : surcharge CSS injectée via le champ branding_custom_css du tenant. Quelques pièges rencontrés en route — le shadow DOM Patternfly, la min-height sur .pf-c-login.stacked, la max-width: 592px imposée par PF. Une fois ces crans débloqués, la page de login reprend la palette ocre, la typographie MapleMono, le ton visuel du site.

Côté facteurs : politique « WebAuthn obligatoire si enrôlé, sinon TOTP, sinon mot de passe ». L'utilisateur ne peut pas rétrograder son propre niveau de sécurité une fois un facteur fort enrôlé.

Mesure

Authelia stoppé proprement, redirections vérifiées sur 14 apps proxées par NPM. Premier login en passkey YubiKey : 1.4 s entre le clic et l'arrivée sur l'app cible. Sessions cross-app fonctionnelles : un login → toutes les apps de la grappe.

Reste un coût d'image : Authentik consomme plus de RAM qu'Authelia. C'est le prix de la flexibilité.

Ce qu'il en reste

Côté apprentissage : un parcours WebAuthn intégral (enregistrement, fallback, recovery), une compréhension fine du cycle de session OIDC, une capacité à étendre Authentik via flows custom (page d'enrôlement, branding par tenant).

Côté ops : une seule pile à patcher pour toute l'auth de la grappe. Côté UX : le login est devenu un signal d'attention, pas une formalité technique.


← Tous les chantiers