OAuth 2.0
Payload JWT (JWT Claims)
Os claims do JWT são informações que o token declara, e que podem (e devem) ser usadas pelas aplicações que o recebem para identificar a entidade que está fazendo o acesso, os limites deste acesso, e seu escopo. A maioria dos claims estão presentes em todos os grant types, mas alguns são específicos. Veja abaixo a descrição de cada campo do payload (claims):
aud
A audiência (audience) refere-se à entidade para a qual o token JWT é emitido e deve ser interpretado. Esse campo serve para garantir que o token seja utilizado apenas pelo serviço para o qual foi emitido e não seja mal utilizado por uma entidade não autorizada, ou seja um aplicativo não autorizado.
Exemplo chamando Plataforma iugu
A aplicação de client_id
com valor 7hCTqZU2nBGtQNahofruOQ
, deseja ficar apto a consumir recursos da própria plataforma iugu como Verificar a Autorização dos recursos.
Para isto, a aplicação obtém um token via client_credentials. Neste processo, é enviado o audience da plataforma desejada, a plataforma iugu, conforme o exemplo em client_credentials.
Na iugu, o audience de um token é um array contendo os ids das aplicações composto pelo prefixo da plataforma seguido do identificador do cliente (client_id), conforme:
client_id = "2pWTsl4ZyO59S1Ft5eXTwV"
"Iugu.Platform.#{client_id}"
Obs: No caso da plataforma iugu, não é necessário colocar o client_id da plataforma, basta informar no audience “Iugu.Platform”.
Assim, caso o processo de emissão do token via client_credentials ocorra sem falhas, o token recebido conterá o audience necessário para fazer a chamada desejada na plataforma iugu, acrescido do “client_id” dessa aplicação, que é incluído no campo “aud” no processo de autorização, constando no token, junto ao audience da plataforma iugu, conforme:
Campo “aud” no token recebido:
"aud": [
"Iugu.Platform", # audience da plataforma iugu
"Iugu.Platform.7hCTqZU2nBGtQNahofruOQ", # audience da sua aplicação
"7hCTqZU2nBGtQNahofruOQ" # id da sua aplicação
]
Com este token é possível realizar as chamadas na plataforma iugu para verificar a Autorização dos recursos.
Exemplo chamando outra Aplicação
Para uma chamada de sua aplicação para uma outra aplicação, ocorre o mesmo processo. Basta incluir no campo audience, o audience da aplicação na qual você deseja realizar a ação, lembrando que o audience é composto pelo prefixo da plataforma seguido do identificador do cliente (client_id).
Por exemplo, ao realizar uma chamada para criação de eventos na aplicação billing, inclua o client_id da aplicação billing na requisição:
audience="Iugu.Platform.#{client_id_do_billing}"
Assim, o token obtido poderá ser utilizado para fazer chamadas na aplicação billing.
client_id
Indica qual aplicação foi autorizada a solicitar o token de acesso. Esse campo ajuda a identificar a aplicação que fez a solicitação de autorização e, portanto, está autorizada a atuar em nome do usuário.
Se um usuário está utilizando um aplicativo cliente A (por exemplo, um aplicativo web) para acessar recursos em uma aplicação de servidor B (por exemplo, um serviço de recursos). Durante o fluxo OAuth, o usuário autoriza explicitamente o aplicativo cliente A a acessar seus recursos na aplicação de servidor B.
Durante a solicitação de autorização (no endpoint /authorize), o client_id do aplicativo cliente A seria incluído no campo “client_id”. Quando o token de acesso é emitido, o client_id da aplicação de servidor B seria incluído no campo “aud”.
sub
Entidade a qual o recurso se referencia (subject) e contém informaçōes, neste caso pode ser representado pelo usuário ou aplicação acompanhando o seu ID no Console da iugu, exemplos:
sub="app:2pWTsl4ZyO59S1Ft5eXTwV"
sub="user:55WvO7IL2ZtlgO61oMkNUR"
exp
Timestamp representando a data de expiração do token, no formato Unix time, segundos em Integer
iat
Timestamp representando a data em que o token foi emitido, no formato Unix time, segundos em Integer
iss
URI que identifica o emissor do token, neste caso a URI do servidor de Identity da iugu
name
Nome do usuário que fez a autenticação no servidor de Identity da iugu
Email do usuário que fez a autenticação no servidor de Identity da iugu