Introducción a authd

per Victor Carceler darrera modificació 2026-05-18T09:33:11+02:00

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 broker para cuentas de Google.
  • Microsoft Entra ID broker para cuentas de Microsoft.
  • Generic OIDC broker para cualquier servidor OIDC como 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.

Captura de pantalla del código QR que es necesario escanear con el móvil

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:

  1. Acceso Google Cloud Console.
  2. Creación de un nuevo proyecto.
  3. Configurar una pantalla de consentimiento OAuth. Será posible escoger "interno" para que únicamente los usuarios de nuestro dominio puedan iniciar sesión.
  4. Crear las credenciales (guardando Client ID y Client Secret) y utilizando TVs and Limited Input devices como 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 valor OWNER y únicamente permite el registro de una cuenta (la primera) con authd. Si se cambia a ALL todos 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 de authd.

Más información: