Autenticação
POST /token · OAuth 2.0 · JWT
1. Modelo de autenticação
A IORQ adota OAuth 2.0 client_credentials — o fluxo apropriado para integrações server-to-server. Não há usuário final no caminho, não há autorização explícita por consentimento. As credenciais identificam a aplicação cliente do integrador e dão acesso ao conjunto de fundos provisionados para ela.
sequenceDiagram
participant INT as Integrador
participant AUTH as IORQ Auth
participant API as IORQ API
INT->>AUTH: POST /token (client_id + client_secret)
AUTH-->>INT: access_token (JWT, exp=1h)
loop Por até 1h
INT->>API: Chamada operacional (Bearer access_token)
API-->>INT: Resposta
end
Note over INT,AUTH: Após expiração, repete o /token
2. Obter um token
2.1 POST /token
POST /tokenPOST /token · application/x-www-form-urlencoded
Parâmetros (form-encoded)
| Campo | Obrigatório | Descrição |
|---|---|---|
grant_type | sim | Sempre client_credentials |
client_id | sim | Identificador da aplicação, fornecido pela IORQ |
client_secret | sim | Secret correspondente. Trate como senha — não exponha em logs, repositórios ou frontend |
scope | não | Opcional. Quando omitido, o token recebe todos os escopos permitidos para a aplicação |
Exemplo:
curl -X POST 'https://auth-hs.iorq.com.br/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials' \
-d 'client_id=YOUR_CLIENT_ID' \
-d 'client_secret=YOUR_CLIENT_SECRET'Resposta:
{
"access_token": "eyJraWQiOiJyc2EtMjAyNiIsImFsZyI6IlJTMjU2In0...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "loan.write installment.write loan.read"
}2.2 Usar o token
Inclua o token no header Authorization de toda chamada operacional. O prefixo Bearer é obrigatório (com espaço).
curl 'https://hs-api.iorq.com.br/loan/OP-001' \
-H 'Authorization: Bearer eyJraWQiOiJyc2EtMjAyNiIs...'3. Ciclo de vida do token
- Validade: 1 hora (
expires_in: 3600). O claimexpdentro do JWT é a fonte da verdade — use-o para programar renovação proativa. - Renovação: não há refresh token. Para renovar, basta chamar
POST /tokennovamente com as mesmas credenciais. - Revogação: não há endpoint público. Em caso de comprometimento, contate a IORQ para revogar o
client_secret— o token deixa de ser aceito imediatamente. - Múltiplos tokens válidos: permitido. Você pode emitir tokens em paralelo para escalar — não há limite enforced por essa via.
Padrão recomendadoMantenha um cache em memória do token e renove proativamente quando faltar menos de 5 minutos para expirar. Isso evita uma rajada de
401quando o token expira no meio de um lote de cessões.
4. Anatomia do JWT
O access_token é um JWT (RFC 7519) assinado em RS256 pelo par de chaves da IORQ. A chave pública está disponível em:
https://auth-hs.iorq.com.br/.well-known/jwks.json
Claims relevantes
| Claim | Significado |
|---|---|
sub | Identificador interno da aplicação cliente |
partner_id | Identificador do parceiro IORQ ao qual a aplicação pertence |
fund_ids | Lista de fundos aos quais o cliente tem acesso |
scope | Espaço-separado, identifica permissões de leitura/escrita |
exp | Timestamp UNIX de expiração |
iat | Timestamp UNIX de emissão |
iss | Emissor — sempre https://auth-hs.iorq.com.br em produção |
Você não precisa verificar a assinatura do token — a IORQ valida do lado dela. Mas se sua arquitetura precisar (ex: para repassar a outro serviço interno), use a JWKS.
5. Segurança do client_secret
client_secret- Armazene o
client_secretem cofre de credenciais (AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager). Nunca em repositório, build artifact ou variável de ambiente em plain text. - Rotacione o secret pelo menos a cada 12 meses. Em caso de qualquer suspeita, rotacione imediatamente — a IORQ emite secrets sob demanda.
- Não use o secret no frontend. O fluxo client_credentials é exclusivamente server-side.
- Restrinja o acesso ao secret aos serviços que efetivamente chamam
/token. Cada serviço que precisa de token deve ter sua própria credencial.
6. Erros de autenticação
| HTTP | Causa | O que fazer |
|---|---|---|
400 | grant_type ausente ou diferente de client_credentials | Corrigir o payload da chamada a /token |
401 em /token | client_id ou client_secret inválido | Verificar credenciais; rotacionar se necessário |
401 em chamada operacional | Token expirado, malformado ou ausente | Renovar via /token e refazer |
403 | Token válido, mas sem escopo para o endpoint chamado, ou fund_id fora da lista permitida | Revisar escopos contratados; contatar IORQ |
429 | Excesso de chamadas a /token | Cachear o token até próximo do exp antes de renovar |
7. Próximos passos
Updated about 6 hours ago