Autenticação OAuth para consumo de API’s
Proporcionar, ao leitor, um entendimento claro do padrão utilizado pela Plataforma RendimentoPay.
- REST: sigla para Representational State Transfer, é um padrão de arquitetura que define um conjunto de regras para troca de mensagem entre Serviços Web que utilizam o protocolo HTTP;
- JSON: sigla para Javascript Object Notation, é um formato simples para troca de dados, que define um padrão em texto auto descritivo para a transferência de informações;
- OAuth: protocolo que permite aos usuários ter acesso limitado a recursos de uma api sem precisar expor suas credenciais;
- RSA: criptografia assimétrica, dispondo de chave pública e privada, para transmissão de forma segura dos dados sensíveis;
- Access_token: token gerado que permite a utilização dos recursos da api.
A Plataforma disponibiliza para integração de parceiros e clientes, serviços web desenvolvidos em padrão REST, que possibilita a interoperabilidade entre aplicações, independente da tecnologia utilizada para sua confecção.
As mensagens trocadas no consumo destes serviços serão em formato JSON e as operações definidas de acordo com os métodos HTTP:
Visando garantir toda segurança necessária, para habilitar-se ao consumo dos serviços oferecidos pela Plataforma RendimentoPay, é necessário anteriormente autenticar a aplicação cliente utilizando o fluxo baseado no padrão OAuth, descrito neste documento.
Ao enviar dados sensíveis, deve-se criptografá-los em RSA(tamanho da chave 2048 bits) utilizando a chave pública obtida nos passos que serão apresentados posteriormente.
Proporcionar ao leitor um entendimento claro do processo de obtenção de access token, onde é utilizado o padrão oAuth, para consumo das API’s Rendimento Pay.
Antes de iniciar o processo de autenticação, o cliente precisará solicitar a Rendimento Pay o client ID e client secret que serão utilizados na autenticação, dados imprescindíveis para execução do fluxo.

No passo 2 do fluxo de autenticação deve ser enviado um header com nome "Authorization".Esse header tem como valor a palavra BASIC seguida por um encode base64 composto pela informação : (clientId : clientSecret) fornecidos pela RendimentoPay
Exemplo: Basic YzA2MWJjYTYtZjNmMi0zMzVjLWI5NWYtNDdkNTcyOWFkOTg5OmIyZWMwNzgyLWNjY2UtMzY0OS05MTFiLTBiM2Q0N2U1Yzk0Mg==
Recomendamos que o fluxo de autenticacao seja iniciado após o retorno (http 401) da execução de qualquer api da plataforma rendimentoPay e respeite o tempo de expiração informado no access token que atualmente é de 86400 segundos(1 dia) para que ocorra uma nova solicitação de autenticação.
Método para obtenção da chave pública.
/AplicacaoCliente/{client_id}/Chavestring (required) Informar o client id fornecido pela RendimentoPay.
client_id: Informar o client id recebido da RendimentoPay.200Content-Type: application/json{
"conteudo": {
"$id": "1",
"clienteId": "d3da6cae-df12-3b97-b780-756219b9ed34",
"chave": "-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzJTRLm9SzNdH+27Cmb0W\r\nakD9mwn537yRxYBH8C6nqCmb7tJ2WRKozs/vvXk5t/qTCxxamt/HhZyG7r7dEvEJ\r\nddF5viVdXkToodiq5gErUMck1XXil4Z4/Qlaxgt0vwjwg4wYAtO0X30aBUqtVOkA\r\n7gyxMKKPAcF13PMiqqWg7M9doEPLPteEAOnRZhkAYTk8m9MNSVe7KBOs5FGuDxiH\r\nv3r8/qKBF6HK8Daw8x6gFKv2Wi+tFR6RZ/81AkYIKeEi1IGHLD3Y2yLZa3tmc6Ip\r\nmMtPi6tGIKGrdxbsYi9SinYFSxK8PPoavhixGUKxSYNDQBL89vZwHKICtehOiME1\r\nnwIDAQAB\r\n-----END PUBLIC KEY-----\r\n"
},
"erros": [],
"alertas": [],
"sucesso": true
}Método para obtenção do access token.
/oauth/access-tokenIMPORTANTE: No campo password, a senha de autenticação, deve ser criptografada utilizando o algoritmo RSA (tamanho da chave 2048 bits) com base na chave pública obtida através da API descrita no item deste manual.
Para o bloco RSA que não tiver o seu tamanho completo, este deve ser completado com bytes 0.
Obter access tokenContent-Type: application/json
Authorization: Basic ZDNkYTZjYWUtZGYxMi0zYjk3LWI3ODAtNzU2MjE5YjllZDM0OmQwMWRiOTc4LWVmMTctMzExNC1iZjcyLWZlYmI1Yjk2MzI4ZA=={
"grant_type": "password",
"username": "nome.hom",
"password": "BRecKQfPFUCrn71LdqENzS12JjHfoHyI/UJnYquQKbCtnH24uhxKaTqLG6s+B8xoa71OaHxhqI0H8rZEG/if2Crw+gavTNSQ3YxSVkIFoSLPNs6GztgGBw+IsSoiH5SRHEo44UBuKQ4B2OdDNGz9juFsWfhY0kwY8G+LgJCTV0/RhpRKeH2CehOpv2UYL58V4e6C3uCBnP6eELnKho1RSURk0bqHsH2SW2EPi28t9grhHfOrVVhs963sSk0u169eOci632Uql6WhjqpgG4SLmI9A+2yOAX5uB17iXeMSCorZEAO8kEpq4QfIOfYRXBBJ+oAW7d+yaMyVqe80mThVbg=="
}200Content-Type: application/json{
"access_token": "e473d0ef-5b7d-3c1c-a691-6938ea7a31d1",
"refresh_token": "33c6cc2c-eae1-3a00-b676-237110aa0955",
"token_type": "access_token",
"expires_in": 86400
}401Content-Type: application/json{
"result": "failure",
"errors": [
{
"type": "INVALID",
"message": "It was not possible to validate user's credentials"
}
],
"status": 401
}
Generated by aglio on 06 Oct 2022