gioser

tawasuyu/brahman

Rust 231TOML 70JSON 14HTML 12905 Sutichaykuna

⎇ 8a15b812f9507defc8726286bd4a541f1f789243 crates/protocol/brahman-auth/README.md Markdown · 52 siq'ikuna · 1.5 KB Ñawpa willay ch'uya

feat(auth): brahman-auth — autenticación del escritorio (PAM + mock) 8a15b812f · sergio ·

1# brahman-auth
2
3Autenticación del escritorio. Contrato `Authenticator` agnóstico del
4backend, con dos implementaciones.
5
6## Para qué
7
8El greeter de carmen (mirada) necesita verificar la contraseña del
9usuario y, en éxito, saber su `uid/gid/home/shell` para arrancar la
10sesión. Eso es exactamente lo que entrega `Authenticator::authenticate`:
11
12```rust
13use brahman_auth::{Authenticator, PamAuthenticator};
14
15let auth = PamAuthenticator::carmen();
16match auth.authenticate("sergio", &password) {
17    Ok(info) => arrancar_sesion(info),      // info: UserInfo
18    Err(e)   => mostrar_error_en_greeter(e),
19}
20```
21
22## Backends
23
24- **`PamAuthenticator`** — verifica contra PAM (`/etc/pam.d/<servicio>`),
25  el mismo subsistema de `login` y `sudo`. Hereda lo que el
26  administrador configure ahí (2FA, FIDO2, `pam_faillock`…) sin que el
27  crate lo sepa.
28- **`MockAuthenticator`** — credenciales fijas en memoria. Para tests y
29  para iterar el greeter en cajas sin PAM configurado.
30
31`AuthError` es deliberadamente grueso: el greeter sólo distingue
32"reintentá" (`BadCredentials`) de "cuenta vetada" (`AccountUnavailable`),
33y nunca puede saber si un usuario existe.
34
35## Servicio PAM
36
37`data/carmen` es el archivo de servicio. Instalarlo:
38
39```sh
40install -Dm644 data/carmen /etc/pam.d/carmen
41```
42
43Ajustar el `include` a la pila de login de la distribución (ver los
44comentarios del archivo).
45
46## Probar contra PAM en una máquina real
47
48```sh
49cargo run -p brahman-auth --example auth-probe -- "$USER" login
50```
51
52Pide la contraseña sin eco e informa el `UserInfo` resuelto.

README.md

brahman-auth

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

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 brahman-auth --example auth-probe -- "$USER" login

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