Casos de Uso - ecosif-auth

MVP1 Modo A: autenticação local (signin), login externo (external-login) e JWT via starter ecosif-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

Fluxo Principal

  1. POST /api/auth/signin: json { "username": "joao.silva@empresa.com", "password": "senha123" }
  2. Validação Bean Validation
  3. Busca usuário por username
  4. Verifica ativo e expiryDate
  5. AuthenticationManager valida senha (BCrypt)
  6. io.ecosif.security.jwt.TokenProvider emite JWT ECOSIF
  7. Resposta 200 com accessToken, user, tenantName

Fluxos Alternativos

Logs


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

Fluxo Principal

  1. IdP autentica usuário no browser (MSAL popup ou Google GIS)
  2. POST /api/auth/external-login: json { "provider": "AZURE", "token": "<id_token>", "tokenType": "ID_TOKEN" }
  3. IdentityProviderValidator valida token (JWKS)
  4. UserProvisioningService.findOrProvision — cria usuário se ECOSIF_AUTH_AUTO_PROVISION=true
  5. Emite JWT ECOSIF via starter TokenProvider
  6. Resposta 200 com accessToken, user, tenantName

Fluxos Alternativos

Logs


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

Fluxo Principal

  1. Cliente envia Authorization: Bearer <JWT_ECOSIF>
  2. TokenAuthenticationFilter (starter) valida assinatura e exp
  3. LocalUserDetailService resolve usuário pelo claim sub (ECOSIF_JWT_SUBJECT_CLAIM)
  4. Requisição processada com SecurityContext populado

Fluxos Alternativos


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

  1. Interceptor detecta token próximo de expirar ou recebe 401
  2. GET /user com Bearer atual
  3. Novo JWT salvo no localStorage
  4. 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.