Obtendo credenciais
A autenticação na plataforma Unico IDCloud utiliza o protocolo OAuth2, no modelo Two-Legged OAuth (2LO).
É feita por meio de uma conta de serviço, vinculada à aplicação (não a um usuário).
A aplicação chama as APIs da Unico em nome da conta de serviço.
Cenário ideal para interações server-to-server.
Solicitação da Conta de Serviço
Para criar a conta de serviço, envie ao gerente de projetos da sua empresa:
Nome da conta de serviço que será criada (até 12 caracteres);
Nome, e-mail e celular do responsável pela conta de serviço.
O celular deve ser Brasileiro, Americano ou Mexicano.
Homologação e Produção requerem contas distintas.
Após o envio dos dados a conta de serviço será criada e você receberá um e-mail para gerar a chave privada (.PEM). A conta de serviço inclui:
Nome único da conta.
Tenant ID (identificador da empresa).
O payload base para montar o JWT
Chave privada (.PEM) - o navegador fará o download automaticamente ao final da geração da conta de serviço, que ficará disponível na pasta downloads do seu computador.
💡Verifique sua caixa de SPAM caso não encontre o e-mail para geração da conta de serviço.
Se precisar da chave pública, solicite ao gerente de projetos ou gere via OpenSSL:
Fluxo de Autenticação
Sua aplicação deve seguir 4 etapas:
Criar o JWT (cabeçalho + payload + assinatura).
Requisitar o token de acesso (
access-token) na plataforma de autenticação.Tratar a resposta (armazenar e usar o
access-tokennas chamadas de API).Validade do token de acesso.
1. Criando o JWT
1.1 Estrutura
Um JWT possui 3 partes concatenadas por .:
1.2 Cabeçalho
Base64url:
1.3 Payload
iss
Identificador da conta de serviço (Service Account). O padrão é: nome da conta + @ + Tenant ID + iam.acesso.io. (ex: "service_account_name@tenant_id.iam.acesso.io").
scope
Permissões solicitadas. Use "*" para todas.
aud
Sempre https://identityhomolog.acesso.io (⚠️ sem barra no final e sempre com HTTPS).
iat
Momento da emissão do JWT, em segundos (no padrão Unix Timestamp).
exp
Expiração do token em segundos (máx. +3600s em relação ao iat). Este valor não pode ser fixo e tem um tempo máximo de 1 hora após o momento de emissão do JWT.
Exemplo de cálculo:
1.4 Assinatura
Algoritmo: RS256 (RSA + SHA-256).
Entrada:
{Header Base64url}.{Payload Base64url}.Assinatura feita com a chave privada (
.key.pem).Resultado final:
A seguir está um exemplo de token JWT antes da codificação em Base64url:
2. Solicitando o Token de Acesso
Enviar o JWT assinado para a plataforma:
Endpoint POST:
UAT:
https://identityhomolog.acesso.io/oauth2/token;PROD:
https://identity.acesso.io/oauth2/token.
Headers:
Body:
grant_type
Utilize o seguinte texto, URL-encoded se necessário: urn:ietf:params:oauth:grant-type:jwt-bearer.
assertion
O JWT, incluindo a assinatura.
Exemplo de requisição:
3. Tratando a Resposta
Exemplo de resposta da plataforma:
Use o
access_tokenem todas as chamadas às APIs da Unico.Caso retorne erro, valide:
JWT formado corretamente.
Tempo definido no
iateexp;Conta de serviço com permissões necessárias.
4. Validade do Token de Acesso
O tempo é informado em
expires_in(segundos).Padrão: 3600s (1 hora).
Renove o token quando faltar 10 minutos para expirar.
Exemplos:
Um novo token de acesso pode ser solicitado quando faltar 10 minutos pra expirar.
¹ De acordo com o RFC 4648 de codificação BaseN, o formato Base64url é similar ao formato Base64, com exceção do caracter = que deve ser omitido, e dos caracteres + e / que devem ser substituídospor - e _, respectivamente.
² JSON Web Signature: https://tools.ietf.org/html/rfc7515.
Atualizado
Isto foi útil?