Class SessionTokenService
Segredo via AuthSettings.getSessionSecret() (env AUTH_SESSION_SECRET;
mínimo 32 chars — exigência do MACSigner). Tokens carregam claims
sub, email, name, iss, iat, exp, jti. O iss vem de
AuthSettings.getIssuer() (env AUTH_ISSUER) — config por-app, a lib não
fixa o tenant (reconciliação onda-2: antes hardcoded por cópia).
Bean condicional: só é instanciado quando auth.session-secret está
configurado. Em modo dev/test sem segredo, a auth das views fica em bypass. Gate
pattern = ".+" (0.7.3): reprova a property ausente e a declarada-vazia.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordClaims de uma sessão válida. -
Constructor Summary
ConstructorsConstructorDescriptionSessionTokenService(AuthSettings settings) Cria o serviço de sessão com relógio do sistema. -
Method Summary
Modifier and TypeMethodDescriptionissueSession(String uid, String email, String name) Emite JWT HS256 com TTL configurado emAuthSettings.getSessionTtlSeconds().issueSession(String uid, String email, String name, String role) Emite JWT HS256 com um papel extra carimbado no claimrole— usado por principais não-humanos (osmokedoSmokeSessionController), que precisam ser distinguíveis de uma sessão de usuário depois de emitidas.
-
Constructor Details
-
SessionTokenService
Cria o serviço de sessão com relógio do sistema.- Parameters:
settings- configurações de auth.
-
-
Method Details
-
issueSession
Emite JWT HS256 com TTL configurado emAuthSettings.getSessionTtlSeconds().- Parameters:
uid- identificador do usuário (sub).email- email do usuário.name- nome do usuário.- Returns:
- o token JWT serializado.
-
issueSession
Emite JWT HS256 com um papel extra carimbado no claimrole— usado por principais não-humanos (osmokedoSmokeSessionController), que precisam ser distinguíveis de uma sessão de usuário depois de emitidas. Claim ausente ⇒ sessão de usuário comum (oSessionAuthenticationFetcherdá sóROLE_VIEW).O nome do claim é
role— canônico da casa (contrato do catálogo de papéis do ADR 0029, chave do grant no central-backend,auth.parameter('role')das sync rules do PowerSync). Um segundo nome para o mesmo conceito falha em silêncio: um gate que lêrolecontra um token que carrega outra chave não dá erro — libera.- Parameters:
uid- identificador do usuário (sub).email- email do usuário.name- nome do usuário.role- papel extra (ex.:ROLE_SMOKE);null/em branco não vira claim.- Returns:
- o token JWT serializado.
-
verify
- Parameters:
token- o JWT serializado.- Returns:
- os claims da sessão válida.
- Throws:
AuthException- código"invalid_session"em qualquer falha (assinatura inválida,issdivergente, expirado, parse error).
-