Client Credentials & Client ID

Autenticação direta que utiliza apenas client ID, private key e certificado

Para que é utilizado esse fluxo?

O fluxo de autenticação "client credentials" é uma abordagem segura que permite acesso direto a nossas APIs para que o usuário gerencie sua própria conta. Nesse fluxo, o cliente fornece suas próprias credenciais de autenticação, como um ID de cliente, certificado e private key, para obter um token de acesso. Esse token é então usado para autenticar o cliente ao fazer solicitações às nossas APIs, garantindo que apenas o cliente autorizado possa acessar e modificar os recursos relacionados à sua conta.

Bora pro código?

Imagem
Premissas Para acessar as APIs da Cora, você precisa obter as credenciais diretamente através de nosso aplicativo ou Cora Web. Saiba como solicitar as credenciais de acesso.

Para exemplificar, iremos listar alguns parâmetros fictícios:
  • Client-id: int-hash
  • Certificado: certificate.pem
  • Private key: private-key.key

Veja a solicitação que seu sistema precisará fazer ao nosso Servidor de Autorização

CampoComentário
MétodoPOST
Endpointhttps://matls-clients.api.stage.cora.com.br/token
curl --cert '/Users/seunome/Documentos/cert_key_cora/certificate.pem'\
--key '/Users/seunome/Documentos/cert_key_cora/private-key.key'\
--header 'Content-Type: application/x-www-form-urlencoded' \
-X POST 'https://matls-clients.api.stage.cora.com.br/token' \
-d 'grant_type=client_credentials&client_id=seuclientid'
<?php
$url = "https://matls-clients.api.stage.cora.com.br/token";

$certFile = "certificate.pem";
$privateKey = "private-key.key";

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_SSLKEY, $privateKey);
curl_setopt($ch, CURLOPT_SSLCERT, $certFile);

curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type" => "application/x-www-form-urlencoded"]);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials&client_id=seuclientid");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
echo PHP_EOL;

Após enviar a requisição acima, o nosso Servidor de Autorização irá responder a seguinte mensagem:

{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJPUXhETFpxNmFJb1EzS1Q0dWFEWWhQai1IUUVpMm5iNGl1WEdWV0diVWh3In0.eyJleHAiOjE2NjM5NzcyMDAsImlhdCI6MTY2Mzg5MDgwMCwianRpIjoiNTA0ZDQzOWMtMmU1OS00M2VjLTkxYWMtMGM2YzFhZDVhNTMxIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0YWdlLmNvcmEuY29tLmJyL3JlYWxtcy9jb3JhIiwic3ViIjoiYXBwLWJlY2tlcmVwIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXBwLWJlY2tlcmVwIiwiYWNyIjoiMSIsInNjb3BlIjoib2ZmbGluZV9hY2Nlc3MiLCJjbGllbnRJZCI6ImFwcC1iZWNrZXJlcCIsImNsaWVudEhvc3QiOiIxNzcuNDUuMTUwLjE0NSIsImNsaWVudEFkZHJlc3MiOiIxNzcuNDUuMTUwLjE0NSJ9.bT3jNRJOdTUJjvfwfP-Cz_Gm3XlKsiqI8TOZzoVkmuM7cJpb2YZRW5nAFfoPArfaCsgJoefSUdl46kSy1siQaPGXo0lXI3oSxnvlfsNZgZMgDazIxNaIdnGkVKlwOarQAFwFlbdO5twD8_gDHiBlC3xRVb5rwSHnKNOzdfk4Oa_9bPef3zFOTk7ijnGjdguru0LLvr-dvrYzcPddosfew37tgDrXQDD_JT52298M_qwwKjfQeykQg3O83zDmtXCccVKmxS-PHEeL3OSDgGxIDpTvYf91CGdcP1K66VIav5ufTbi5GUn_LivAD_5apasri7jrRgsHcH__a45PgWqrGw",
    "expires_in": 86400,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 1614056798,
    "scope": "offline_access"
}

Caso o token expire é só fazer essa chamada novamente.

154
Importante Cada ambiente (produção e Stage) possui seu próprio conjunto de credenciais, portanto, é importante se certificar que private key e certificado estão relacionados ao ambiente da requisição. Saiba mais sobre os nossos ambientes
Imagem
Opa, agora é hora do lanche! Sim, finalizamos a etapa de Client Credentials