Método de Autenticação

Utilizamos o método de autenticação OAuth 2.0, um padrão da indústria para autorização, para garantir a segurança e a integridade da identificação de usuários e sistemas. Esse método envolve a geração de tokens que permitem o acesso seguro aos nossos servidores, softwares e APIs. A autenticação através do OAuth 2.0 ajuda a prevenir fraudes cibernéticas e o vazamento de informações confidenciais, utilizando criptografia de chave pública para validar as identidades.

1

Criação das Chaves Pública e Privada

Antes de receber a credencial, é necessário gerar um par de chaves: uma chave privada e outra pública. A chave privada será utilizada para assinar o token, enquanto a chave pública deverá ser enviada a nós para validar a assinatura do token.

Primeiramente gere a chave privada utilizando o comando abaixo via terminal:

openssl genrsa -out private.pem 2048

Posteriormente gere a chave pública através do terminal:

openssl rsa -in private.pem -pubout > public.pem
Guarde a chave privada em local seguro e nunca a compartilhe.
2

Solicitação da chave pública

Solicitaremos seu e-mail para abrir uma requisição referente ao envio da chave pública. Após isso, você receberá uma mensagem do notifications@heflo.com com as instruções para envio da chave.

Envie somente sua chave pública para validação do nosso time, respondendo ao e-mail de solicitação do HEFLO, sem adicionar outras pessoas em cópia por segurança. Caso outras pessoas sejam copiadas, isso invalidará o recebimento da chave pública.
3

Recebimento do client_id

Após a validação da sua chave pública, nossa equipe irá gerar e enviar o seu client_id, que será utilizado para a autenticação no sistema.

4

Geração do JWT

Gere um TOKEN seguindo o padrão RS256, contendo informações cruciais como identificador único, tempo de emissão e expiração.

const tokenHeader = {
alg: "RS256", // 'alg': Algoritmo usado para assinar o token (RS256 - RSA com SHA-256).
typ: "JWT"    // 'typ': Tipo do token, no caso, JWT.
};

const tokenPayload = {
jti: "5e8e07e3-d3f0-4881-a644-0895f4949e9b", // 'jti': ID único do token.
sub: "client_id", // 'sub': Identificador do cliente (preencher com o client_id enviado pelo nosso time).
iat: 1573648398, // 'iat': Data e hora em que o token foi emitido (timestamp UNIX em segundos).
nbf: 1573648398, // 'nbf': Data e hora antes da qual o token não deve ser aceito (timestamp UNIX).
exp: 1573648458, // 'exp': Data de expiração do token (timestamp UNIX).
iss: "client_id", // 'iss': Emissor do token (preencher com o client_id enviado pelo nosso time).
aud: "https://auth.moneyp.dev.br/connect/token" // 'aud': Destinatário do token (verifica se o token é enviado ao servidor correto).
};

5

Endpoint de geração de Bearer Token

Para gerar um TOKEN utilizando o método OAuth 2.0, o cliente deve enviar uma requisição POST com o Header Content-Type “x-www-form-urlencoded”, abaixo o CURL do endpoint que será utilizado para gerar o token:

  curl --location 'https://auth.moneyp.dev.br/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cache-Control: no-cache' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=client_id' \
--data-urlencode 'scope=<< SCOPES>>' \ // Substitua << SCOPES>> com os scopes dos endpoints que serão liberados ao utilizar esse token
--data-urlencode 'client_assertion= "<< Token JWT >>"' \ // JWT gerado no passo anterior.
--data-urlencode 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
O campo do curl acima 'scope=<< SCOPES>>' aceita até 300 caracteres e a cada scope deve ser separado por espaço.

Após a autenticação, o access token obtido deve ser usado em todas as requisições subsequentes no cabeçalho de autorização.

const headers = {
  Authorization: `Bearer <<Access token>>`
  };
O nosso Bearer Token, uma vez gerado, tem uma validade de 1 hora. Após esse período, será necessário gerar um novo token para garantir a continuidade da sessão de forma ativa e segura

Esta página foi útil?