Inicio de sesión único OIDC
Authorization Code + PKCE. Inicia sesión una vez en el hub; cada app federada te reconoce y lee tu rol desde el token. Iniciar sesión una vez abre cada app a la que tienes permitido entrar.
Lockatus es el hub de identidad de la suite: la lista compartida de personas y el portero común. Guarda los usuarios, sus contraseñas, sus dos factores y sus roles por app, y le entrega a cada uno un pase firmado para entrar a cualquier app sin volver a iniciar sesión.
Inicio de sesión único OIDC
Authorization Code + PKCE. Inicia sesión una vez en el hub; cada app federada te reconoce y lee tu rol desde el token. Iniciar sesión una vez abre cada app a la que tienes permitido entrar.
Verificación offline
El hub firma los tokens con RS256; las apps los verifican contra el JWKS público sin llamar a casa. Si el hub está caído, las sesiones activas siguen funcionando.
La matriz de acceso
Una grilla de quién-por-sistema. Cada app declara su propio catálogo de roles; Lockatus los asigna. Sin rol para una app no hay acceso — el control ocurre en la matriz.
Dos factores y recuperación
Registra TOTP una vez (Google Authenticator o compatible), con códigos de recuperación de un solo uso y un reset de admin. Heredado por cada app. Cambiar una contraseña invalida cada refresh token.
Las cuatro apps de un solo usuario no se vuelven multiusuario por dentro — Lockatus es su tabla externa de usuarios. Cada app declara los roles que entiende; el hub los asigna desde la matriz, y la app controla por rol. La pertenencia más profunda, por usuario, vive solo donde una app realmente posee recursos por persona (como Selega).
Cualquier nueva app de la familia se suma desde la matriz misma, sin volver a desplegar: declara su slug y su catálogo de roles (y URIs de redirect opcionales) con el botón + App, y luego asigna roles a los usuarios. El catálogo de la suite viene presembrado.
La federación es opcional y no disruptiva — cada app mantiene su login standalone detrás de un
flag AUTH_MODE=federado (desactivado por defecto). En modo federado la app delega /login al hub y,
en el callback, intercambia el código, verifica los tokens RS256 contra el JWKS, y siembra su propia
sesión — así el resto del control por rol de la app no cambia. Se incluyen clientes OIDC de referencia para Node
(node:crypto, sin dependencias extra) y Python (cryptography).