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
- external-login-backend.md — implementação Fase 2 (componentes, testes, checklist)
- autenticacao_unificada_mvp.md
- variaveis_autenticacao_baseline.md
- gateway_jwt_ecosif.md
- mvp2-operacao.md
- mvp3-flexibilidade.md