Autenticação - Guia para Integradores¶
Este guia explica como autenticar e usar a API do ecosif-compliance.
Visão geral¶
O ecosif-compliance não possui endpoints de login. Ele valida tokens JWT emitidos pelo serviço ecosif-auth (porta 8080), no mesmo padrão do ecosif-masterdata.
Modos (ECOSIF_API_TOKEN_MODE):
ECOSIF_JWT(padrão) — Bearer HS512 comAUTH_TOKEN_SECRETHYBRID_ECOSIF_AZURE— JWT eCosif ou token AzureAZURE_ENTERPRISE_GATEWAY/GOOGLE_GATEWAY— token do IdP
Alinhamento técnico: autenticacao_jwt_alinhamento.md.
Fluxo¶
1. Cliente → ecosif-auth (porta 8080)
POST /api/auth/signin
2. ecosif-auth → Cliente
{ accessToken: "eyJhbGciOiJIUzI1NiJ9..." }
3. Cliente → ecosif-compliance (porta 8021)
GET /api/compliance/rule/list
Authorization: Bearer <token>
4. ecosif-compliance → Cliente
[valida token e retorna dados]
Passo 1: Obter token JWT¶
curl -X POST http://localhost:8080/api/auth/signin \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "senha"
}'
Response¶
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9...",
"user": {
"id": "1",
"displayName": "Administrator",
"email": "admin",
"roles": ["ADMIN"],
"tenant": "TEMP_TENANT"
},
"tenantName": "TEMP_TENANT"
}
Passo 2: Usar o token¶
Authorization: Bearer <seu-token-jwt>
cURL¶
TOKEN="eyJhbGciOiJIUzI1NiJ9..."
curl -X GET http://localhost:8021/api/compliance/rule/list \
-H "Authorization: Bearer $TOKEN"
JavaScript¶
const token = localStorage.getItem('token');
const response = await fetch('http://localhost:8021/api/compliance/rule/list', {
headers: {
Authorization: `Bearer ${token}`,
},
});
const rules = await response.json();
Python¶
import requests
headers = {'Authorization': f'Bearer {token}'}
response = requests.get('http://localhost:8021/api/compliance/rule/list', headers=headers)
rules = response.json()
Renovação de token¶
Tokens JWT expiram (padrão 30 minutos). Em 401 Unauthorized:
- Faça login novamente no ecosif-auth
- Substitua o token armazenado
- Repita a requisição
Endpoints que não requerem autenticação¶
/healthe/actuator/**— health, info e métricas/docs/**,/swaggerui/**,/v3/api-docs,/v3/api-docs.yaml,/openapi.json,/swagger.json— documentação (somente seECOSIF_COMPLIANCE_SWAGGER_ENABLED=true)
Todos os demais endpoints exigem JWT válido quando ECOSIF_COMPLIANCE_AUTH_ENABLED=true.
Validação do token¶
O middleware Flask:
- Exige header
Authorization: Bearer ... - Valida assinatura, algoritmo, emissor/audiência conforme o modo
- Popula
g.ecosif_userpara isolamento por empresa/filial
Token ausente ou inválido → 401 com corpo:
{
"response-code": 2,
"response-message": "Invalid Token",
"message-mode": "ALERT"
}
Boas práticas¶
- Armazene o token com segurança; não coloque em URL nem em log
- Trate
401com novo login - Use HTTPS em produção
- Use a mesma
AUTH_TOKEN_SECRETdo ecosif-auth nos modos ECOSIF_JWT / híbrido