Files
mirada/shared/auth/auth-core/LEEME.md
T
sergio 3dc85ebdcd feat: mirada standalone — compositor Wayland + WM sobre Llimphi (build magro)
Stack de display extraído del monorepo: compositor teselante (Cuerpo smithay
+ Cerebro WM agnóstico), greeter PAM, portal XDG, CLI de control. Llimphi se
consume por git desde su repo publicado; las hojas compartidas (format,
auth-core, rimay-localize, wawa-config, app-bus) y el widget menubar van
vendorizados. Sin el asistente IA (pluma-llm) ni la barra web wasm — el
compositor no los necesita. cargo check --workspace pasa (18 crates, 0 warn).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 11:01:49 +00:00

1.5 KiB

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:

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/<servicio>), 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:

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

cargo run -p auth-core --example auth-probe -- "$USER" login

Pide la contraseña sin eco e informa el UserInfo resuelto.