# auth-core Autenticación del escritorio. Contrato `Authenticator` agnóstico del backend, con dos implementaciones. ## Para qué El greeter de carmen (mirada) necesita verificar la contraseña del usuario y, en éxito, saber su `uid/gid/home/shell` para arrancar la sesión. Eso es exactamente lo que entrega `Authenticator::authenticate`: ```rust use brahman_auth::{Authenticator, PamAuthenticator}; let auth = PamAuthenticator::carmen(); match auth.authenticate("sergio", &password) { Ok(info) => arrancar_sesion(info), // info: UserInfo Err(e) => mostrar_error_en_greeter(e), } ``` ## Backends - **`PamAuthenticator`** — verifica contra PAM (`/etc/pam.d/`), el mismo subsistema de `login` y `sudo`. Hereda lo que el administrador configure ahí (2FA, FIDO2, `pam_faillock`…) sin que el crate lo sepa. - **`MockAuthenticator`** — credenciales fijas en memoria. Para tests y para iterar el greeter en cajas sin PAM configurado. `AuthError` es deliberadamente grueso: el greeter sólo distingue "reintentá" (`BadCredentials`) de "cuenta vetada" (`AccountUnavailable`), y nunca puede saber si un usuario existe. ## Servicio PAM `data/carmen` es el archivo de servicio. Instalarlo: ```sh install -Dm644 data/carmen /etc/pam.d/carmen ``` Ajustar el `include` a la pila de login de la distribución (ver los comentarios del archivo). ## Probar contra PAM en una máquina real ```sh cargo run -p auth-core --example auth-probe -- "$USER" login ``` Pide la contraseña sin eco e informa el `UserInfo` resuelto.