RF-SHARED-001 — Autenticação via SSO Keycloak
Especificacao
O sistema deve autenticar todos os usuários (servidores e alunos) via Keycloak 25.0 usando o protocolo OAuth2/OIDC.
Requisitos detalhados
- O frontend (Nuxt) deve redirecionar para o Keycloak login page quando o usuário não possui token válido.
- Após autenticação bem-sucedida, o Keycloak retorna
access_token(JWT) erefresh_token. - O
access_tokendeve conter as roles do usuário (DAPE, Professor, Aluno) no claimrealm_access.roles. - O
refresh_tokendeve ser usado para renovar oaccess_tokenantes de expirar, sem necessidade de re-login. - O management-service deve validar o
access_tokenem cada requisição via middleware. - Tokens expirados devem resultar em HTTP 401 e o frontend deve tentar refresh automático.
Fluxo de recuperação de senha
- O link "Esqueceu a senha?" deve redirecionar para
{keycloak_url}/realms/{realm}/login-actions/reset-credentials. - O Keycloak gerencia todo o fluxo de reset (envio de e-mail, validação de token, redefinição).
Criterio de verificacao
- Login com credenciais válidas retorna tokens e permite acesso à API
- Login com credenciais inválidas retorna erro sem expor detalhes internos
- Token expirado é renovado automaticamente via refresh_token
- Token inválido/adulterado é rejeitado com HTTP 401
Fonte: ADR-005 (Keycloak SSO).