Iniciar sesión en Xen-Orchestra con el SSO de Pocket-ID
Cómo configurar el inicio de sesión único en Xen-Orchestra utilizando el proveedor de identidades Pocket-ID.
En homelab gestiono la virtualización con XCP-NG y Xen-Orchestra (XO). La realidad es que funciona muy bien, es muy estable y ¡son soluciones europeas! ¡Ole ahí esa soberanía tecnológica buena!
Recientemente he instalado y configurado Pocket-ID para intentar centralizar la identidad a lo largo de todos los servicios que tengo desplegados. Que, si bien no son muchísimos, es preferible no tener una contraseña diferente para cada servicio.
Creación cliente OIDC en Pocket-ID
Desde el panel de administración de Pocket-ID, buscamos la opción para crear un nuevo cliente:

En esta nueva pantalla, rellenaremos los datos necesarios:
- Name: ``Xen-Orchestra` (o lo que decidamos)
- Client Launch URL: La URL desde la que nuestra instancia de XO es accesible.
- Callback URLs:
host-xo/signin/oidc/callback(siendohost-xola URL de nuestra instancia, diferenciando entre HTTP y HTTPS). - El resto de datos podemos editarlos al gusto: imagen, client id, etc.
Al guardar la configuración se mostrarán los detalles:

Depende de cómo tengamos configurado el entorno, puede ser necesario añadir grupos o usuarios autorizados para usar esta aplicación.
Configuración Xen-Orchestra
PREVIO: Usuario admin local
En este momento se asume que ya hay un usuario local como administrador en el entorno de Xen-Orchestra. En mi caso, y creo que es una buena práctica, voy a mantener el usuario local, para seguir teniendo acceso al sistema si fallara la autenticación centralizada.

Opcional: creación de usuarios OIDC
Los usuarios que no existan en el sistema de XO, pero que se hayan podido autenticar con Pocket-ID (o el sistema OIDC en uso), se crearán en XO. Por seguridad, se crearán sin permisos.
Si conocemos los usernames de los usuarios a generar en el sistema, podemos crearlos y asignar los permisos y pertenencia a grupos adecuados. Al hacerlo, al iniciar sesión con el SSO, ya podrán disfrutar de los permisos adecuados.
Configuración y activación plugin auth-oidc
La funcionalidad de iniciar sesión SSO con OIDC en XO es provista por el plugin auth-oidc. Lo encontraremos en Settings > Plugins.
Antes de activarlo, hemos de configurarlo, con los datos datos mostrados en Pocket-ID y las características de nuestro entorno (en mi caso, tomo el campo preferred_username de Pocket-ID como username en XO).

Tras guardar la configuración, hemos de activar el plugin.
Probar el SSO
Una vez guardados los cambios en XO, si abrimos una ventana privada (para que nuestras cookies de inicio de sesión no interfieran) veremos dos formas de iniciar sesión:
- Sign in with OpenID Connect (nuevo)
- Inicio de sesión con usuario y contraseña (como hasta ahora)

Al hacer clic en la primera opción, nos aparecerá la pantalla de Pocket-ID para iniciar sesión:

Si todo ha funcionado correctamente, se iniciará sesión en XO. Si el usuario es nuevo, se creará en XO (sin permisos). Al no tener permisos, no podrá realizar ninguna acción:


Capturas de pantalla de la interfaz de XO, en la que se puede ver cómo se ha iniciado sesión con el usuario pablo. Al no tener permisos, no se muestran MV.
Asignar permisos a los nuevos usuarios
Como se ha comentado anteriormente, se pueden crear los usuarios de forma previa al primer inicio de sesión y asignarles los permisos adecuados.
Si no, siempre se puede, una vez creado el usuario (automáticamente con el primer inicio de sesión vía OIDC), actuando como un usuario que sea administrador, buscar el usuario en Settings > Users y asignarle los permisos adecuados:

¡Hemos terminado!
En este momento hemos terminado de configurar el inicio de sesión único en Xen-Orchestra contra Pocket-ID, y hemos comprobado que funciona correctamente.
¿Alguna duda?
No dudes en ponerte en contacto conmigo para cualquier duda, sugerencia, queja o aclaración que creas necesaria. ¡Será un placer hablar contigo!