Introducción a authd
authd es un demonio de autenticación para proveedores de identidad en la nube. Permite iniciar sesión en un ordenador (escritorio o servidor, con greeter gráfico, terminal o ssh) utilizando la cuenta de Google Workspace o algún otro proveedor de identidad en la nube.
El servicio utiliza OIDC (OpenID Connect) para autenticar a un usuario creando una cuenta local en el ordenador en el primer acceso. Es un servicio modular que permite utilizar diferentes brokers como:
Google IAM brokerpara cuentas de Google.Microsoft Entra ID brokerpara cuentas de Microsoft.Generic OIDC brokerpara cualquier servidorOIDCcomo Keycloak.
La primera vez que el usuario intenta acceder al ordenador debe seleccionar la opción "No está listado" y escribir su dirección de correo (en el centro <usuario>@elpuig.xeill.net). Se mostrará un código QR que el usuario deberá escanear con el móvil y escribir el código proporcionado. Si el usuario tiene abierta la sesión en el navegador del dispositivo móvil, o se autentica con éxito, podrá aceptar que se vincule el ordenador con su cuenta.

Entonces el ordenador pedirá que establezca una contraseña para este equipo y podrá iniciar sesión. A partir de ahora el usuario tendrá una cuenta local en el equipo y ya no será necesario el uso del dispositivo móvil para iniciar sesión (aunque existe una opción de configuración para forzar su uso).
Sin embargo las cuentas generadas por authd tienen algunas particularidades. La primera de ellas es que no se utiliza la base de datos tradicional /etc/passwd y en su lugar se utiliza una base de datos sqlite3 gestionada por el servicio.
El comando getent permite realizar consultas NSS (Name Service Switch) recopilando la información de diferentes bases de datos entre las que se encuentra authd. Si se quieren consultar los datos que en las cuentas normales están en /etc/passwd se podrá utilizar el comando getent de la siguiente manera:
$ getent passwd vcarceler@elpuig.xeill.net
vcarceler@elpuig.xeill.net:x:10000:10000:vcarceler@elpuig.xeill.net:/home/vcarceler@elpuig.xeill.net:/usr/bin/bash
Como se puede ver tanto el login del usuario, su grupo primario y el directorio home son la cuenta de correo utilizada (vcarceler@elpuig.xeill.net en este caso).
Podremos establecer una conexión ssh con la máquina utilizando esta sintáxis:
ssh vcarceler@elpuig.xeill.net@192.168.12.180
La gestión de estas cuentas (y grupos) se realiza con la herramienta authctl. Si borramos el directorio home de un usuario este se recrea en el próximo inicio de sesión.
Credenciales en Google Cloud Console
El primer paso para desplegar authd será obtener unas credenciales en Google Cloud Console.
Para ello se deberán seguir estos pasos:
- Acceso Google Cloud Console.
- Creación de un nuevo proyecto.
- Configurar una pantalla de consentimiento OAuth. Será posible escoger "interno" para que únicamente los usuarios de nuestro dominio puedan iniciar sesión.
- Crear las credenciales (guardando
Client IDyClient Secret) y utilizandoTVs and Limited Input devicescomo tipo de aplicación.
Las aplicaciones TVs and Limited Input devices (nuestro ordenador con Ubuntu 26.04 y oauth) no abren un navegador embebido en el que el usuario realiza la autenticación. Se limitan a mostrar el código QR que permitirán realizar la autenticación en otro dispositivo (normalmente el móvil). De esta manera las credenciales de la cuenta de Google Workspace utilizadas para autenticar al usuario no son necesarias en el ordenador en el que se está iniciando sesión.
Instalación y configuración de authd
La puesta en marcha de authd es bien sencilla. Bastará con instalar el paquete authd y el broker deseado que se distribuye en formato de paquete snap.
apt update
apt install authd
snap install authd-google
Habilitamos el broker
cp /snap/authd-google/current/conf/authd/google.conf /etc/authd/brokers.d/
Y configuramos nuestras credenciales en el fichero /var/snap/authd-google/current/broker.conf.
[oidc]
issuer = https://accounts.google.com
client_id = <CLIENT_ID>
client_secret = <CLIENT_SECRET>
Los servicios se pueden reiniciar con
systemctl restart authd
snap restart authd-google
Otros parámetros interesantes del fichero /var/snap/authd-google/current/broker.confpueden ser:
home_base_dir: permite especificar el directorio base para los directorios personales.allowed_users: por defecto tiene el valorOWNERy únicamente permite el registro de una cuenta (la primera) conauthd. Si se cambia aALLtodos los usuarios del dominio podrán registrar su usuario. También es posible especificar una lista de cuentas.extra_groups: grupos suplementarios para los usuarios deauthd.
Más información:
