Pular para o conteúdo principal

Obtendo Access Tokens

O DVS usa o OAuth2 client credentials grant para autenticação service-to-service. O OSIGU Auth Server usa HTTP Basic auth para identificação do client e query string para o grant type — esta página apresenta o formato exato da request e implementações prontas para copiar em 5 linguagens.

Endpoints

AmbienteToken URL
Sandboxhttps://sandbox.osigu.com/v1/oauth/token
Produçãohttps://api.osigu.com/v1/oauth/token

As credenciais são escopadas por ambiente — o client_id de sandbox não funciona contra a token URL de produção.

Formato da request

grant_typestringrequired

Enviado como parâmetro de query string (não no body). Sempre client_credentials.

Authorizationheaderrequired

HTTP Basic auth: Basic <base64(client_id:client_secret)>. Use as credenciais emitidas pela OSIGU para o ambiente alvo.

Method: POST Body: vazio Content-Type: não necessário (sem body)

Response

{
"access_token": "7dd4f350-676e-4257-9d7b-f3c5ac4dfi14",
"token_type": "bearer",
"expires_in": 86399,
"scope": "read write",
"extensions": {
"provider_slug": "br-gamma"
}
}
CampoDescrição
access_tokenToken opaco (não é um JWT). Envie como Authorization: Bearer <token> em chamadas subsequentes à DVS API.
token_typeSempre bearer.
expires_inSegundos até a expiração. Padrão é 86399 (~24 horas).
scopeScope OAuth2 grosso concedido ao token (ex.: read write). As authorities mais finas por endpoint do DVS são aplicadas server-side a partir da configuração do client_id.
extensionsMapa de metadados de formato livre. Inclui o provider_slug (utilize-o para registrar a qual tenant o token pertence). Pode incluir outros campos escopados ao tenant que a OSIGU adicione no futuro.

Exemplos de código

curl --location --request POST \
"https://sandbox.osigu.com/v1/oauth/token?grant_type=client_credentials" \
--header "Authorization: Basic $(echo -n "$DVS_CLIENT_ID:$DVS_CLIENT_SECRET" | base64)"

Boas práticas

Faça cache dos tokens

Tokens são válidos por ~24 horas por padrão. Faça cache em memória (ou em cache compartilhado como Redis para serviços multi-instância) e renove ~60 segundos antes da expiração. Chamar o endpoint do OAuth a cada request da API resultará em rate-limit e latência desnecessária.

Armazene secrets em um vault, não em arquivos de env

Use AWS Secrets Manager, HashiCorp Vault, Doppler ou equivalente. Rotacione o client_secret anualmente (ou após qualquer suspeita de exposição) entrando em contato com a OSIGU.

Trate 401 com refresh

Se uma request retornar 401, o token pode ter expirado ou sido revogado. Descarte o token em cache, solicite um novo e tente a request original uma vez. Não faça retry infinitamente.

Não faça log dos tokens

Remova os headers Authorization dos logs da aplicação. Um token vazado é válido por até 24 horas.

Use extensions.provider_slug para observabilidade

Registre em log o provider_slug da response do token junto com os request IDs. Isso torna a correlação de incidentes com o suporte da OSIGU muito mais rápida.

Erros

StatusBodyCausa
400error: "invalid_request"Falta o grant_type na query string.
401error: "invalid_client"client_id ou client_secret incorretos, ou ambiente errado (credenciais de sandbox contra URL de produção).
405Method Not AllowedFoi usado GET em vez de POST.
429rate limitedMuitas requests de token. Faça cache e reduza o ritmo.
5xxserver errorIndisponibilidade do Auth Server. Faça retry com exponential backoff (máximo 3).