Client Credentials
O fluxo de client credentials é um dos fluxos de autenticação OAuth2 usado para permitir que aplicativos clientes se autentiquem em aplicativos provedores de recursos, ou seja, que possuem alguma API.
Conceitos iniciais
access token
O access token é um token JWT assinado, ou seja, utiliza um mecanismo de assinatura criptográfica para atestar sua legitmidade, ele é utilizado para autenticar uma aplicação em outra aplicação da plataforma iugu.
No caso específico do client credentials, o access token terá a claim subject e o client_id com o mesmo valor, que é o id da aplicação que solicitou o token.
client
É a aplicação interessada em consumir alguma API de outra aplicação
resource server
É a aplicação que é dona de uma API e quer autenticar os seus clientes
authorization server
É o Identity, o servidor responsável por executar todo o processo de autenticação de usuários e aplicações, na plataforma iugu
Audience
É um parâmetro utilizado para indicar qual aplicativo deverá estar autorizado a receber o access token
que for gerado no processo, ou seja, ele indica a aplicação que o client deseja acessar.
Fluxo detalhado
- Aplicativo cliente solicita um access token ao Identity, enviando suas credenciais, Identity retorna o access token, caso as credenciais enviadas sejam válidas
- Aplicativo cliente tenta acessar um endpoint protegido da sua API, enviando o acess token
- API valida o access token e libera o acesso aos recursos solicitados, caso o cliente tenha as permissões necessárias
Passo a Passo de implementação como cliente
Para se autenticar como cliente é necessário obter o access token. Para obter o access token é necessário fazer um request do tipo POST utilizando TLS na URL https://identity.iugu.com/token.
Parâmetros necessários
- client_id (id da sua aplicação)
- client_secret (chave de segurança da sua aplicação)
- grant_type (para este fluxo em específico deve ser
client_credentials
) - audience (audience da aplicação que deseja acessar)
Exemplo
POST /token HTTP/1.1
Host: identity.iugu.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
Resposta:
{
"access_token": "eyJ0eXAiOiJhdCtKV1QiLCJraWQiOiJjZWI5NjBjOS1iODliLTQ4MWUtYjg2NS1kY2UyZTAyMTYzNDgiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE3MDQ4MjM1NzQsImlhdCI6MTcwNDgyMzI3NCwic3ViIjoiYXBwOjE0cm5tbndsVnlHckN5YVFnc2M4enoiLCJhdWQiOlsiSXVndS5QbGF0Zm9ybSIsIjE0cm5tbndsVnlHckN5YVFnc2M4enoiXSwic2NvcGUiOiIiLCJjbGllbnRfaWQiOiIxNHJubW53bFZ5R3JDeWFRZ3NjOHp6IiwiaXNzIjoiaHR0cHM6Ly9pZGVudGl0eS5pdWd1LmNvbS8ifQ.JTlbIDjOFXYbzT674ff0u1Q3ML1KM1iIXoTUEOTchXPC3pHuLRrjxH3o8U_rlvaEhoBCtncj8yk5hv_WcB9BgPmSlji9iXkGFfsoOPtLSfIV6UdrW_LJtJYQseY6buJW6GMJy-kveLh1AAE-8U-RbC8-qlZXjXJBNP6MehD-2QeFeDIcECQkGdjchhoPb851KuDxRis5gtEtIDuKFfNhU9EMeO1plv8rypIDwKqICnHm4e-0VyOgnq7kMT6_1DYvDtQnKBysJLMry0sk2-c7wVM4t3YatJCGsJg6jPPcSf3Owbv_AFGRTeY48DLjujULhM2kB1v813BD3f1SfqGwfQ",
"token_type": "Bearer",
"expires_in": 300
}
Resposta Decodificada:
{
"exp": 1704823574,
"iat": 1704823274,
"sub": "app:14rnmnwlVyGrCyaQgsc8zz",
"aud": [
"Iugu.Platform",
"14rnmnwlVyGrCyaQgsc8zz"
],
"scope": "",
"client_id": "14rnmnwlVyGrCyaQgsc8zz",
"iss": "https://identity.iugu.com/"
}
Validação do access token como resource server
A aplicação que recebe o access token deve executar validações de assinatura e conteúdo do token, para garantir sua integridade e consistência, para saber mais sobre como validar o access token acesse esta página.