{ ... }: { # Module NixOS officiel : installe YubiKey Manager et les règles udev # nécessaires pour que ykman puisse accéder à la clé en session utilisateur. programs.yubikey-manager.enable = true; # Déploiement du mapping utilisateur <-> YubiKey environment.etc."u2f-mappings".source = ../u2f-mappings; # Authentification PAM avec FIDO2 / YubiKey security.pam.u2f = { enable = true; # Une authentification YubiKey réussie suffit. # Le mot de passe reste disponible comme mécanisme de secours # pour les comptes qui ne s'authentifient pas par FIDO2. control = "sufficient"; settings = { authfile = "/etc/u2f-mappings"; # Identifiant commun à tous nos futurs postes. origin = "pam://nixos-workstations"; appid = "pam://nixos-workstations"; # Indique à l'utilisateur qu'il doit toucher la clé. cue = true; # Le PIN FIDO2 est maintenant obligatoire. pinverification = 1; # Pas de biométrie / vérification utilisateur intégrée. # La vérification repose explicitement sur le PIN. userverification = 0; }; }; # Le changement de mot de passe via `passwd` doit rester une opération # PAM/Unix classique. Le module U2F global ne doit pas intercepter # l'authentification demandée par `passwd`, sinon le helper attend une # interaction FIDO2 qu'il ne doit pas gérer à cette étape. security.pam.services.passwd.u2f.enable = false; }