Casos de Uso - ecosif-auth
MVP1 Modo A: autenticação local (
signin), login externo (external-login) e JWT via starterecosif-spring-boot-starter-security.
Visão Geral
Casos de uso do ecosif-auth após o refactor de autenticação unificada (JWT ECOSIF + external-login).
CU-001: Autenticação Local (Usuário/Senha)
Descrição
Login com username e senha armazenados no eCosif (POST /api/auth/signin).
Ator Principal
Usuário ou integração server-to-server (ecosif-automations)
Pré-condições
- Conta existente, ativa e não expirada
Fluxo Principal
POST /api/auth/signin:json { "username": "joao.silva@empresa.com", "password": "senha123" }- Validação Bean Validation
- Busca usuário por username
- Verifica ativo e
expiryDate AuthenticationManagervalida senha (BCrypt)io.ecosif.security.jwt.TokenProvideremite JWT ECOSIF- Resposta
200comaccessToken,user,tenantName
Fluxos Alternativos
- Credenciais inválidas → 401 (mensagem genérica)
- Inativo / expirado → 401
"azure": trueno body → 400 (campo legado rejeitado)
Logs
local_signin event=attempt|success|failed|rejected(username mascarado, sem senha)
CU-002: Login Externo (Microsoft / Google)
Descrição
Browser ou cliente envia id_token do IdP; backend valida JWKS e emite JWT ECOSIF.
Ator Principal
Usuário (Angular + MSAL/GIS) ou integrador com token IdP
Pré-condições
ECOSIF_AUTH_PROVIDERhabilita o provedor do body (AZURE,AZURE_ENTERPRISE,GOOGLE)- Token IdP válido (assinatura,
aud,iss,exp)
Fluxo Principal
- IdP autentica usuário no browser (MSAL popup ou Google GIS)
POST /api/auth/external-login:json { "provider": "AZURE", "token": "<id_token>", "tokenType": "ID_TOKEN" }IdentityProviderValidatorvalida token (JWKS)UserProvisioningService.findOrProvision— cria usuário seECOSIF_AUTH_AUTO_PROVISION=true- Emite JWT ECOSIF via starter
TokenProvider - Resposta
200comaccessToken,user,tenantName
Fluxos Alternativos
- Token inválido → 401
- Provider não habilitado no env → 400
- Usuário inexistente e
AUTO_PROVISION=false→ 404 - Usuário inativo/expirado → 401
Logs
external_login event=attempt|success|validation_failed|user_not_found|rejected(sem token IdP completo)
CU-003: Validação de Token JWT em Requisição Protegida
Descrição
Microsserviço valida JWT ECOSIF via ecosif-spring-boot-starter-security.
Pré-condições
- Token emitido pelo
ecosif-authcomAUTH_TOKEN_SECRETcompartilhado
Fluxo Principal
- Cliente envia
Authorization: Bearer <JWT_ECOSIF> TokenAuthenticationFilter(starter) valida assinatura eexpLocalUserDetailServiceresolve usuário pelo claimsub(ECOSIF_JWT_SUBJECT_CLAIM)- Requisição processada com
SecurityContextpopulado
Fluxos Alternativos
- Token ausente/inválido/expirado → 401
- Token Microsoft/Google direto na API (Modo A) → 401
CU-004: Refresh de Sessão (GET /user)
Descrição
Angular chama GET /ecosif-masterdata/user com JWT válido; resposta inclui novo accessToken.
Fluxo
- Interceptor detecta token próximo de expirar ou recebe 401
GET /usercom Bearer atual- Novo JWT salvo no
localStorage - Falha de refresh → logout e redirect
/login
CU-005 / CU-006: Logs Docker (Admin)
Inalterados — requerem JWT válido em /api/admin/docker-logs.
Resumo
| ID | Nome | Endpoint | Prioridade |
|---|---|---|---|
| CU-001 | Autenticação local | POST /api/auth/signin |
Alta |
| CU-002 | Login externo | POST /api/auth/external-login |
Alta |
| CU-003 | Validação JWT | APIs protegidas | Alta |
| CU-004 | Refresh sessão | GET /user |
Alta |
| CU-005 | Logs Docker | GET /api/admin/docker-logs |
Baixa |
Migração de contratos antigos: migracao-signin-azure.md.