diff --git a/README.md b/README.md index bb1a1bb..7084008 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,33 @@ The home config is also exposed for use beyond these hosts: (`inputs..homeModules.default`). Consumers must supply the module args these expect: `inputs` always, `identity` for git/desktop, `portable` for sway. +## Directory authentication (SSSD → Authentik LDAP) + +Every NixOS host authenticates users against the Authentik LDAP outpost via +SSSD, implemented in [`modules/sssd.nix`](./modules/sssd.nix) and enabled by +default through the `services.authentikLdap.enable` option (added to +`baseModules`). The **EDaaS** WSL box opts out +(`services.authentikLdap.enable = false`) as a work-managed environment; the +macOS host is unaffected (SSSD is Linux-only). + +- Connects over LDAPS to `ldap.lyrapup.pet:636`, search base + `dc=ldap,dc=goauthentik,dc=io`, binding as + `cn=sssd-bind,ou=users,dc=ldap,dc=goauthentik,dc=io`. +- The schema mappings match Authentik's non-standard object classes + (`goauthentik.io/ldap/user`, `goauthentik.io/ldap/group`) over the POSIX + attributes (`uid`, `uidNumber`, `gidNumber`, `homeDirectory`). +- Home directories are created on first login (`pam_mkhomedir`). + +### Secrets (agenix) + +The LDAP bind credential is an [agenix](https://github.com/ryantm/agenix) +secret, decrypted at activation with each host's SSH host key. The decrypted +plaintext is a full `sssd.conf` drop-in delivered to +`/etc/sssd/conf.d/01-ldap-authtok.conf`, so the password never enters the Nix +store. Owner setup (host recipient keys, encrypting the bind password, DNS for +`ldap.lyrapup.pet`, rebuild) is documented in +[`secrets/README.md`](./secrets/README.md). + ## Applying ```sh