Single sign-on OIDC
Authorization Code + PKCE. Faça login uma vez no hub; cada app federado o reconhece e lê o seu papel a partir do token. Fazer login uma vez abre todos os apps em que você tem permissão.
O Lockatus é o hub de identidade da suíte: a lista compartilhada de pessoas e o porteiro comum. Ele guarda os usuários, suas senhas, seus dois fatores e seus papéis por app, e entrega a cada um um passe assinado para entrar em qualquer app sem fazer login de novo.
Single sign-on OIDC
Authorization Code + PKCE. Faça login uma vez no hub; cada app federado o reconhece e lê o seu papel a partir do token. Fazer login uma vez abre todos os apps em que você tem permissão.
Verificação offline
O hub assina os tokens com RS256; os apps os verificam contra o JWKS público sem ligar para casa. Se o hub estiver fora do ar, as sessões ativas continuam funcionando.
A matriz de acesso
Uma grade de quem-por-sistema. Cada app declara o seu próprio catálogo de papéis; o Lockatus os atribui. Nenhum papel para um app significa nenhum acesso — o gating acontece na matriz.
Dois fatores e recuperação
Inscreva o TOTP uma vez (Google Authenticator ou compatível), com códigos de recuperação de uso único e um reset pelo admin. Herdado por cada app. Trocar uma senha invalida cada refresh token.
Os quatro apps de usuário único não se tornam multiusuário por dentro — o Lockatus é a sua tabela externa de usuários. Cada app declara os papéis que entende; o hub os atribui a partir da matriz, e o app faz o gating por papel. A propriedade mais profunda, por usuário, vive apenas onde um app de fato possui recursos por pessoa (como o Selega).
Qualquer novo app da família entra a partir da própria matriz, com nenhuma reimplantação: declare o seu slug e o seu catálogo de papéis (e URIs de redirect opcionais) com o botão + App, e então atribua papéis aos usuários. O catálogo da suíte já vem pré-semeado.
A federação é opcional e não disruptiva — cada app mantém o seu login autônomo atrás de uma
flag AUTH_MODE=federado (desligada por padrão). No modo federado, o app delega o /login ao hub e,
no callback, troca o código, verifica os tokens RS256 contra o JWKS, e semeia a sua própria
sessão — de modo que o resto do gating de papéis do app permanece inalterado. Clientes OIDC de referência são fornecidos para Node
(node:crypto, sem dependências extras) e Python (cryptography).