Poner una biblioteca 3D autoalojada tras SSO
PrintStash admite OpenID Connect, así que los miembros entran con tu proveedor. Qué controla y qué no el mapeo de grupos, y qué queda por asignar.
Si ya tienes Authentik, Authelia u otro proveedor de OpenID Connect, PrintStash puede ponerse detrás. Los miembros entran con la cuenta que usan para todo lo demás, PrintStash crea su usuario en el primer inicio de sesión, y la pertenencia a un grupo que tú designas decide si aterrizan como administradores.
Lo que hay que entender antes de planificar un despliegue: el mapeo de grupos es un bit, administrador o no. Todo lo más fino, qué colecciones puede editar alguien y en qué impresoras puede lanzar trabajos, se asigna dentro de PrintStash y no viene del proveedor de identidad. El SSO resuelve quién entra, no quién puede hacer qué.
Lo que configuras
Los ajustes están en Settings, SSO, y el secreto de cliente se guarda cifrado en lugar de en texto plano.
Necesitas la URL del emisor, un client ID y un client secret de tu proveedor, además de una URI de
redirección que apunte de vuelta a tu PrintStash. El resto tiene valores por omisión que conviene
revisar antes del despliegue: los scopes solicitados son openid profile email groups, el nombre de
usuario sale del claim preferred_username, los grupos vienen de un claim groups, y el grupo que
concede administrador es printstash-admins hasta que lo cambies. La etiqueta del botón de inicio
de sesión también se configura, y vale la pena ponerle el nombre con el que tus miembros llaman al
proveedor de identidad.
El flujo de inicio de sesión es el estándar, hecho como debe ser: código de autorización con PKCE,
el documento de descubrimiento del proveedor leído para obtener endpoints y claves, la firma del
token de ID validada contra el JWKS publicado, y tanto state como nonce comprobados antes de
aprovisionar nada.
Hay además un interruptor para permitir un emisor HTTP no seguro, que existe para pruebas locales. Déjalo desactivado.
Qué pasa en el primer inicio de sesión
A un miembro que no ha entrado nunca se le crea el usuario en el momento, con el nombre de usuario tomado del claim y hecho único si choca con alguien que ya está, y el correo copiado del token. La cuenta se identifica por el emisor más el sujeto y no por el nombre de usuario, así que alguien que se cambie el nombre en tu directorio no se convierte en un segundo usuario.
Su hash de contraseña queda inutilizable a propósito, así que una cuenta aprovisionada por SSO no puede recurrir a una contraseña local. Los inicios de sesión locales siguen funcionando para las cuentas que tienen una, y eso importa más de lo que parece: es la forma de volver a entrar cuando el proveedor de identidad no está disponible.
La condición de administrador se recalcula en cada inicio de sesión a partir de la pertenencia a grupos del momento. Saca a alguien del grupo de administradores en el directorio y su siguiente entrada lo degrada, sin que nadie toque PrintStash. Una cuenta desactivada dentro de PrintStash se rechaza al iniciar sesión aunque el directorio la siga considerando válida, así que la desactivación local es el freno de mano.
Lo que el SSO no te resuelve
Tres cosas siguen siendo manuales, y un plan de despliegue que dé por hecho lo contrario va a decepcionar a alguien.
El acceso a las colecciones se concede en PrintStash como view, edit o admin, colección por colección. No hay ningún mapeo de un grupo del directorio a un rol de colección, así que un miembro nuevo llega pudiendo entrar y ve solo lo que le da tu estructura de colecciones por omisión.
El acceso a las impresoras es igual. Desde la v0.11.1, view, print, control y admin se conceden por impresora, y para imprimir hace falta además acceso de edición a la colección del modelo de origen. Esa combinación es útil de verdad en un taller compartido, porque puedes dejar que una clase vea todas las máquinas mientras solo el personal lanza trabajos, pero se asigna persona a persona dentro de la app. La guía de acceso compartido en un makerspace sitúa el SSO como una pieza del trabajo completo de control de acceso, junto a los inicios de sesión de los miembros, los roles por colección, los permisos por impresora y el registro de auditoría.
El desaprovisionamiento es parcial. Sacar a alguien de tu directorio le impide iniciar sesión, y no elimina su cuenta de PrintStash, sus subidas ni sus claves de API. Si alguien se va, desactiva también la cuenta en PrintStash, lo que revoca además las claves que heredan de ella.
Si le conviene a tu espacio
Para un makerspace con un puñado de personas en plantilla y sin proveedor de identidad, sinceramente, no. Levantar Authentik para no crear ocho cuentas es mucha infraestructura para un problema pequeño, y el montaje de biblioteca para un makerspace explica cómo hacerlo con cuentas locales, roles de colección y claves de API por usuario.
Se gana su sitio cuando el directorio ya existe y es el sistema de referencia: un laboratorio universitario donde los estudiantes llegan y se van cada cuatrimestre, una empresa donde las bajas pasan todas por un mismo sitio, o cualquier lugar donde la alternativa sea un usuario compartido apuntado en un pósit. Entonces la ganancia no es la comodidad, es que el acceso se acaba cuando se acaba el contrato o la matrícula, sin que nadie tenga que acordarse de hacerlo aquí.
El registro de auditoría es lo que hace eso verificable después. Anota quién cambió qué, y desde la v0.11.4 las mutaciones autenticadas por cookie conservan bien su autor, así que una acción hecha desde el navegador se puede atribuir a la persona que la hizo en lugar de quedar como anónima.
Preguntas que suelen surgir
¿Qué proveedores de identidad funcionan con él?
La implementación es OpenID Connect genérico, construido sobre el documento de descubrimiento del proveedor, y el proyecto nombra a Authentik y Authelia como los proveedores a los que apunta. Cualquier cosa que publique un endpoint de descubrimiento estándar, admita código de autorización con PKCE y pueda meter la pertenencia a grupos en un claim tiene la misma forma de montaje, aunque con cualquier cosa que no sean esos dos yo lo probaría antes de prometérselo a los miembros. Lo que necesitas de cualquiera de ellos es la misma lista corta: URL del emisor, client ID, client secret, URI de redirección y un claim que lleve los grupos.
¿Puedo mapear grupos del directorio a permisos de colección o de impresora?
No. La pertenencia a grupos decide una sola cosa, si la persona es administradora, cruzando sus grupos con la lista de grupos de administración que configures. Los roles de colección y los permisos por impresora se asignan dentro de PrintStash, usuario por usuario. En un taller eso suele significar un paso corto de alta después del primer inicio de sesión de cada persona. Diseña el árbol de colecciones para que el estado en el que aterriza un miembro nuevo ya sea casi el correcto para la mayoría, y ese paso seguirá siendo corto.
¿Qué pasa cuando el proveedor de identidad se cae?
Los inicios de sesión por SSO se paran, porque PrintStash tiene que llegar al endpoint de descubrimiento y validar un token contra las claves del proveedor. El inicio de sesión local sigue disponible, y por eso mantener al menos una cuenta local de administración con una contraseña fuerte es la precaución que importa aquí. Las sesiones ya emitidas son sesiones normales de PrintStash y no se revalidan contra el proveedor en cada petición, así que a quien ya está dentro no lo echan en cuanto el proveedor pestañea.
¿Alguien que sale del directorio pierde el acceso al instante?
Pierde la capacidad de volver a entrar, no su sesión actual ni sus datos. La condición de administrador se recalcula en cada inicio de sesión, así que una degradación surte efecto en la siguiente entrada, pero una sesión activa continúa hasta que caduca. Para una baja de verdad, desactiva también la cuenta dentro de PrintStash: eso rechaza el inicio de sesión sin más, invalida las sesiones y cubre las claves de API de las que la cuenta es dueña, que si no seguirían funcionando desde un script en un puesto de trabajo.
¿Hace falta SSO para compartir una biblioteca entre varias personas?
En absoluto, y la mayoría de las instalaciones no deberían molestarse. Las cuentas individuales con roles a nivel de colección te dan atribución, revocación y claves de API por usuario sin ninguna dependencia externa, y los enlaces compartidos con caducidad cubren a quien nunca debería tener cuenta. El SSO vale la pena cuando ya tienes un proveedor de identidad y quieres que el acceso a PrintStash se acabe con él.
Fuentes
backend/app/services/oidc.py,backend/app/core/config.pyy la tarjeta de ajustes de SSO de PrintStash en el repositorio para el flujo PKCE, los valores por omisión del claim y del grupo, el aprovisionamiento en el momento y cómo se recalcula la condición de administrador. Comprobado el 19 de agosto de 2026.- Las notas de la v0.11.0 para la función OIDC, la v0.11.1 para el control de acceso por impresora y la v0.11.4 para la conservación del autor en el registro de auditoría con mutaciones autenticadas por cookie.