En bref
| Prérequis | SWAG + Authelia 4.38 fonctionnel, SMTP configuré, Docker |
| Résultat | Connexion passwordless en un clic via passkey (empreinte, clé FIDO, Windows Hello) |
| Ressources | Notes de version Authelia 4.39 · Release 4.39.1 · WebAuthn (Wikipedia) |
Cet Ă©pisode est le onziĂšme de la sĂ©rie sur mon reverse proxy SWAG. Hasard du calendrier : la semaine derniĂšre je sortais un Ă©pisode sur SWAG, et la semaine suivante Authelia publie sa version 4.39 avec des fonctionnalitĂ©s que jâattendais depuis longtemps. Deux Ă©pisodes de suite sur la mĂȘme thĂ©matique â tant pis.
Authelia, un rappel rapide
Authelia est la couche dâauthentification qui se place devant SWAG. Câest un projet open source gratuit â je le prĂ©cise dâautant plus dans cet Ă©pisode qui porte sur Authelia lui-mĂȘme.
Son rĂŽle : centraliser la gestion des utilisateurs et des accĂšs. On dĂ©finit quels utilisateurs ont accĂšs Ă quels services, on configure lâauthentification multifacteur, et on bĂ©nĂ©ficie du Single Sign-On (SSO) â on sâauthentifie une fois, et on est reconnu par tous les services hĂ©bergĂ©s derriĂšre SWAG.
Par exemple : jâai Nextcloud, Jellyfin, Vaultwarden. PlutĂŽt que de mâauthentifier sĂ©parĂ©ment sur chaque service, Authelia centralise lâauthentification. Une fois connectĂ© via Authelia, tous mes services me reconnaissent.
Les politiques dâaccĂšs sont granulaires : un service peut exiger un deuxiĂšme facteur, un autre peut ĂȘtre accessible avec un seul facteur, dâautres encore peuvent ĂȘtre accessibles sans aucune authentification selon quâon vient du rĂ©seau local ou dâinternet.
La grande nouveauté : WebAuthn et les passkeys
La version 4.39 apporte le support natif de WebAuthn â standard W3C â avec les passkeys et la connexion passwordless.
WebAuthn, câest le standard derriĂšre FIDO2, FIDO UAF (Universal Authentication Framework) et U2F (Universal Second Factor). ConcrĂštement, plutĂŽt quâun mot de passe, lâauthentification repose sur un Ă©lĂ©ment de confiance local :
- Lâempreinte digitale sur smartphone
- Une clĂ© USB FIDO (comme la clĂ© Kensington que jâai montrĂ©e dans la vidĂ©o, avec un capteur dâempreinte)
- Windows Hello (reconnaissance faciale ou empreinte)
- Un gestionnaire de mots de passe compatible (Proton Pass, Google Chrome, etc.)
- Le TPM (Trusted Platform Module) â câest dâailleurs ce dont tout le monde a entendu parler avec Windows 11
Câest nettement plus sĂ©curisĂ© quâun mot de passe classique : pas de risque de phishing par vol du mot de passe, lâauthentification est liĂ©e Ă lâappareil physique. Et câest surtout beaucoup plus fluide en pratique.
DĂ©monstration : sur mon Nextcloud, je clique âSe connecter avec Autheliaâ, jâarrive sur la page dâAuthelia, je clique âSign in with a passkeyâ, je choisis ma clĂ©, je pose mon doigt sur le capteur dâempreinte de mon tĂ©lĂ©phone â et je suis connectĂ©. ZĂ©ro mot de passe saisi, zĂ©ro code Ă usage unique Ă rĂ©cupĂ©rer.
Avant de commencer : lire les notes de version
Grosse mise Ă jour = grosse prudence. Avant de toucher quoi que ce soit, je recommande de lire le blog post officiel Authelia 4.39 â il y a une personne chez Authelia qui a pris le temps de rĂ©diger un article trĂšs complet sur tous les changements, les impacts, et la roadmap vers la version 5.
Les changements techniques Ă connaĂźtre :
OpenID Connect (OIDC) : la maniĂšre de fournir les claims dans les ID tokens a changĂ© pour se conformer aux spĂ©cifications. Ăa peut potentiellement casser certaines intĂ©grations â en particulier lâintĂ©gration Nextcloud si vous avez oidc_login_use_id_token Ă true dans config.php (voir plus bas).
Base du conteneur : le conteneur nâest plus basĂ© sur Alpine mais sur une image custom avec des ELS checks. La construction a changĂ©, il peut y avoir de petits impacts Ă la marge.
Intégration systemd : si vous utilisez Authelia avec systemd (pas le cas en Docker), il y a des changements à prendre en compte.
Tip : ne pas utiliser Google Translate pour lire la documentation â les termes techniques sont souvent mal traduits. Utiliser plutĂŽt un LLM qui respecte le vocabulaire technique.
Faire une sauvegarde avant tout
Câest non-nĂ©gociable pour une mise Ă jour majeure. Dans Duplicati (mon conteneur de sauvegarde), je vĂ©rifie que lâapp data de Docker a bien Ă©tĂ© sauvegardĂ© rĂ©cemment. Dans mon cas, la sauvegarde datait de 10 minutes avant la mise Ă jour â je pouvais me lancer.
Si vous nâavez pas de solution de sauvegarde automatique en place, faites au minimum une copie manuelle du rĂ©pertoire de configuration dâAuthelia (authelia/config/).
Mise Ă jour des images
docker pull lscr.io/linuxserver/swag
docker pull authelia/authelia:latest
docker compose up -d
AprĂšs le dĂ©marrage, vĂ©rifier les logs Authelia â on doit voir Authelia 4.39 starting... avec un niveau info et aucun warning ni erreur.
Point dâattention : jâai rencontrĂ© un problĂšme avec SWAG au moment de cette mise Ă jour â pas liĂ© Ă Authelia mais au docker mod CrowdSec qui avait un conflit avec la nouvelle image SWAG. Correction temporaire : dĂ©sactiver CrowdSec dans les docker mods. Le problĂšme Ă©tait discutĂ© sur le Discord LinuxServer.io, les logs indiquaient une dĂ©pendance non rĂ©solue. Jâai dĂ» attendre la correction avant de remettre CrowdSec.
Jâai aussi attendu la sortie de la version 4.39.1 avant de continuer â elle corrigeait un bug WebAuthn que jâavais rencontrĂ©. Je recommande dâattendre quelques jours aprĂšs une sortie majeure, surtout si votre configuration de production dĂ©pend de WebAuthn.
Activer WebAuthn dans la configuration
AprÚs la mise à jour, il faut comparer votre fichier de configuration actuel avec le template par défaut. La bonne méthode :
- Aller sur le dĂ©pĂŽt GitHub dâAuthelia, rĂ©cupĂ©rer
config.template.yaml - Créer ce fichier dans votre répertoire
authelia/config/ - Ouvrir les deux fichiers cĂŽte Ă cĂŽte dans VS Code (diff)
- Identifier les nouvelles sections à intégrer
La section WebAuthn Ă ajouter dans votre configuration.yml : il faut ajouter un bloc webauthn: avec disable: false, activer enable_passkey_login: true (expĂ©rimental â câest le bouton âSign in with passkeyâ sur la page de connexion), dĂ©finir un display_name, et configurer les sous-sections filtering, selection_criteria et metadata selon les recommandations de sĂ©curitĂ© documentĂ©es dans le config.template.yaml sur GitHub dâAuthelia.
Le paramĂštre enable_passkey_login: true est expĂ©rimental mais câest celui qui active le bouton de connexion directe par passkey sur la page dâAuthelia. Câest exactement ce quâon cherche.
Attention : dans les versions suivantes (4.40, 4.41, vers la 5.0), ce paramÚtre expérimental changera probablement. Il faudra surveiller les notes de version.
Il y a aussi un paramĂštre enable_passkey_for_two_factors qui permet de bypasser le deuxiĂšme facteur quand on utilise une passkey. Normalement, mĂȘme si WebAuthn est trĂšs sĂ©curisĂ©, Authelia peut encore demander un second facteur selon vos politiques. Ce paramĂštre permet de dire âune passkey compte comme authentification complĂšte, pas besoin dâun OTP en plusâ. Câest expĂ©rimental, mais trĂšs pratique en pratique.
AprĂšs modification, redĂ©marrer le conteneur Authelia. Sur la page de connexion, le bouton âSign in with a passkeyâ doit apparaĂźtre.
Correction nécessaire pour Nextcloud
Si vous avez Nextcloud intégré avec Authelia via OIDC, il y a un changement obligatoire dans config/www/nextcloud/config/config.php :
'oidc_login_use_id_token' => false, // était true avant, doit passer à false
Si vous laissez cette valeur Ă true, vous aurez une erreur aprĂšs lâauthentification OIDC â Nextcloud nâarrivera pas Ă rĂ©soudre lâutilisateur correctement. Le reste de la configuration OIDC Nextcloud nâa pas besoin de changer.
Enregistrer une passkey
Lâenregistrement ne peut pas se faire Ă la volĂ©e lors de la premiĂšre connexion. Il faut le faire manuellement, une fois, depuis les paramĂštres du compte Authelia.
Procédure :
- Se connecter normalement à un service (identifiant + mot de passe + OTP si nécessaire)
- Aller directement sur lâURL de votre instance Authelia
- Authelia affiche âVous ĂȘtes actuellement connectĂ©â avec votre nom dâutilisateur
- Cliquer sur lâicĂŽne de paramĂštres en haut Ă droite â Settings
- Dans la section âSecurityâ â âAuthentification Ă deux facteursâ
- Cliquer âAjouterâ
- Une popup sâouvre avec un code OTP Ă usage unique â reçu par email Ă lâadresse associĂ©e au compte
- Saisir ce code, donner un libellĂ© Ă la clĂ© (ex: âProton Pass PCâ, âChrome Androidâ)
- Le gestionnaire de mots de passe / navigateur vous demande de crĂ©er la clĂ© â confirmer
PrĂ©requis indispensable : SMTP doit ĂȘtre configurĂ© dans Authelia pour que lâenvoi du code OTP par email fonctionne. Sans SMTP, lâenregistrement est impossible.
Jâai enregistrĂ© deux clĂ©s :
- âPCâ â gĂ©rĂ©e par Proton Pass sur mon ordinateur portable
- âS23 Plusâ â gĂ©rĂ©e par Google Chrome sur mon tĂ©lĂ©phone (Proton Pass Android ne gĂšre pas encore bien WebAuthn dans ce contexte)
Le libellĂ© est trompeur : ce nâest pas lâappareil qui compte, câest le gestionnaire de mots de passe ou le navigateur qui stocke la clĂ©. Proton Pass sur PC, Chrome sur Android â voilĂ ce que jâaurais dĂ» Ă©crire.
Test du fonctionnement complet
Pour tester proprement, il faut dâabord supprimer tous les cookies dâauthentification (ou passer en navigation privĂ©e). Dans Chrome : cliquer sur lâicĂŽne de paramĂštres cookies â âGĂ©rer les donnĂ©es des sitesâ â supprimer les cookies des trois domaines concernĂ©s (Authelia + les services).
Ensuite :
- Aller sur Nextcloud â âSe connecter avec Autheliaâ
- Page Authelia : cliquer âSign in with a passkeyâ
- Le gestionnaire de mots de passe / navigateur propose les clés disponibles
- Je choisis ma clĂ© Proton Pass â empreinte â connectĂ© directement sur Nextcloud
Zéro mot de passe tapé. Zéro code OTP récupéré. Un clic + une empreinte.
Câest prĂ©cisĂ©ment ça que jâattendais depuis un moment. Câest Ă la fois plus sĂ©curisĂ© (pas de mot de passe Ă voler) et plus fluide (moins dâĂ©tapes). LâexpĂ©rience au quotidien est nettement amĂ©liorĂ©e.
Ce qui reste Ă explorer
Je nâai pas encore testĂ© Windows Hello avec cette configuration. Ăa devrait fonctionner de la mĂȘme maniĂšre â Windows Hello implĂ©mente WebAuthn, il devrait pouvoir stocker et utiliser les clĂ©s. Ce sera peut-ĂȘtre lâobjet dâune future vidĂ©o.
Un mot sur la qualité du projet Authelia
Jâauto-hĂ©berge Authelia depuis un moment, et ce projet tient vraiment la route. Il y a une roadmap claire et prĂ©cise, les mises Ă jour respectent les standards (OIDC, WebAuthn, les normes de sĂ©curitĂ©), les changements sont toujours bien documentĂ©s avec des articles de blog. La mise Ă jour 4.38 lâannĂ©e derniĂšre Ă©tait complexe Ă migrer â la 4.39, on met Ă jour lâimage et ça repart tel quel.
La 5.0 va probablement amener dâautres changements importants. Il faudra suivre lâactualitĂ©, mais avec ce projet, jâai confiance que ça sera bien documentĂ©.
Si vous auto-hĂ©bergez des services exposĂ©s sur internet, vous ne pouvez pas faire lâĂ©conomie dâune couche dâauthentification centralisĂ©e. Authelia + SWAG + CrowdSec, câest lâensemble que jâutilise et que je recommande. Une fois configurĂ©, ajouter un nouveau service derriĂšre ce reverse proxy prend littĂ©ralement 10 secondes â copier un fichier de config, lâadapter, le sauvegarder, et le service est disponible en ligne avec toute la sĂ©curitĂ© dĂ©jĂ en place.