Docs
...

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

sequenceDiagram participant C as Cliente participant I as Identity participant S as App C <<->> I: Solicita um access token, eviando suas credenciais C ->> S: Acessa endpoint protegido da API, enviando o acess token S ->> S: Valida o access token recebido S -->> C: Libera ou recusa acesso do Cliente, baseado no token e permissões do cliente
  1. Aplicativo cliente solicita um access token ao Identity, enviando suas credenciais, Identity retorna o access token, caso as credenciais enviadas sejam válidas
  2. Aplicativo cliente tenta acessar um endpoint protegido da sua API, enviando o acess token
  3. 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.