API de autenticação ECOSIF (MVP1–3)

POST /api/auth/external-login

Autentica via provedor externo com validação criptográfica do token e retorna JWT ECOSIF.

Request

{
  "provider": "AZURE",
  "token": "<id_token>",
  "tokenType": "ID_TOKEN"
}
Campo Valores Descrição
provider AZURE, AZURE_ENTERPRISE, GOOGLE Provedor configurado em ECOSIF_AUTH_PROVIDER
token JWT do IdP ID Token (padrão) ou Access Token
tokenType ID_TOKEN, ACCESS_TOKEN Default: ID_TOKEN

Response 200

{
  "accessToken": "<jwt_ecosif>",
  "user": { "id": "1", "displayName": "...", "email": "...", "roles": ["STAFF"], "tenant": "..." },
  "tenantName": "TEMP_TENANT"
}

O claim sub do JWT ECOSIF segue ECOSIF_JWT_SUBJECT_CLAIM (username ou userId).

Erros

Status Causa
400 provider inválido ou body malformado
401 Token inválido, expirado, audience/issuer incorretos, usuário inativo
404 Usuário não cadastrado e ECOSIF_AUTH_AUTO_PROVISION=false (MVP2)

POST /api/auth/signin

Login local (usuário e senha). Usado por ecosif-automations e integrações server-to-server.

Request

{
  "username": "user@empresa.com",
  "password": "********"
}

Response 200

Mesmo formato de external-login (accessToken, user, tenantName).

Erros

Status Causa
400 Body inválido ou azure: true (removido no MVP3 — use external-login)
401 Credenciais inválidas, usuário inativo ou expirado

Endpoints removidos (MVP3)

Endpoint Status
POST /api/auth/signin-azure Removido
POST /api/auth/signin com "azure": true Retorna 400

Substituição: POST /api/auth/external-login com id token do provedor.


Variáveis de ambiente (ecosif-auth)

Variável Descrição
ECOSIF_AUTH_PROVIDER AZURE, AZURE_ENTERPRISE, GOOGLE ou NONE
ECOSIF_AZURE_TENANT_ID Tenant Entra ID
ECOSIF_AZURE_CLIENT_ID Client ID SPA
ECOSIF_AZURE_EXPECTED_AUDIENCE Default: client ID
ECOSIF_AZURE_EXPECTED_ISSUER Issuer explícito (MVP3); vazio = derivado do tenant
ECOSIF_GOOGLE_CLIENT_ID Client ID Google
ECOSIF_AUTH_AUTO_PROVISION Auto-criar usuário (default true; false → 404)
ECOSIF_AUTH_DEFAULT_TENANT Default TEMP_TENANT
ECOSIF_AUTH_DEFAULT_ROLE Default STAFF
ECOSIF_AUTH_DEFAULT_CREATED_BY Default AZURE_AD
ECOSIF_AUTH_DEFAULT_EXPIRY_TYPE Default A
ECOSIF_AUTH_DEFAULT_EXPIRY_YEARS Default 1
ECOSIF_JWT_SUBJECT_CLAIM username (padrão) ou userId (MVP3)
AUTH_TOKEN_SECRET Secret HMAC — mesmo em todos os serviços
TOKEN_EXPIRATION Expiração em ms (default 1800000)

Exemplo curl (Azure)

curl -s -X POST "${AUTH_URL}/api/auth/external-login" \
  -H "Content-Type: application/json" \
  -d '{"provider":"AZURE","token":"'"${ID_TOKEN}"'","tokenType":"ID_TOKEN"}'

Documentação relacionada