O que é e como configurar uma API Identity?

O que é uma API Identity?

API Identity é um tipo de API que criamos especificamente para facilitar a autenticação pelo fluxo Password de OAuth.

Primeiro, vamos entender o que é o fluxo Password:

Fluxo Password de OAuth

No fluxo do tipo Password, o username e a senha de um usuário final, armazenados em um serviço externo, são utilizados para gerar o access token necessário para fazer requisições a uma API.

O funcionamento segue o diagrama abaixo (fonte: The OAuth 2.0 Authorization Framework):

+----------+
| Resource |
|  Owner   |
|          |
+----------+
     v
     |    Resource Owner
    (A) Password Credentials
     |
     v
+---------+                                  +---------------+
|         |>--(B)---- Resource Owner ------->|               |
|         |         Password Credentials     | Authorization |
| Client  |                                  |     Server    |
|         |<--(C)---- Access Token ---------<|               |
|         |    (w/ Optional Refresh Token)   |               |
+---------+                                  +---------------+

Ou seja, o usuário informa seu username e senha para o cliente, que os passa para o servidor de autorização em uma chamada POST que pede a geração de um access token. Como resposta dessa chamada, o servidor de autorização envia um access token que, agora, pode ser usado para fazer requisições a API.

Quando utilizá-lo?

Como o fluxo Password estabelece que o username e senha do usuário sejam compartilhados com o cliente, é mais comum utilizá-lo para permitir acesso a aplicações diferentes de um mesmo serviço, mas não a aplicações terceiras (nesse caso, fluxos de mais segurança, como o Authorization Code, são preferíveis).

Agora, a questão mais importante:

Como a API Identity se insere no fluxo que acabamos de descrever?

Quando uma chamada POST para geração de token via Password é enviada para a API OAuth, ela identifica a API Identity vinculada a API por meio da app que é informada no header Authorization. A informação de username e senha deve estar presente no corpo da requisição. A API OAuth envia, então, uma chamada à API Identity para validar username e senha, o que a Identity faz chamando o endpoint de autenticação que está cadastrado nela. Se as informações forem válidas, então a API Identity responde positivamente à API OAuth, que gera o token necessário para ter acesso à API. Caso contrário, o token não é gerado.

Um detalhe importante: é possível vincular várias APIs Identity para uma mesma API. Então, nesse fluxo de autenticação, a OAuth vai chamar cada uma das Identity vinculadas, da mais nova para a mais antiga, e assim que username e senha forem validados, ela interrompe a validação e responde positivamente à OAuth. Se todas as APIs Identity forem chamadas e username e senha não forem validados, o token não é gerado. Essa atuação da API Identity permite com que o Manager concentre os servidores de autenticação internos para as suas APIs.

De forma resumida, então, temos este fluxo (com um exemplo de chamada a duas APIs Identity):

api identity pt

Toda API que requerir o fluxo Password para geração e validação de access token deve estar vinculada a pelo menos uma API Identity (essa vinculação é feita no cadastro da API Identity). Essa API e a API Identity devem estar implantadas no mesmo ambiente. Fora isso, para que a API Identity consiga tratar as chamadas para geração de token, é importante que ela esteja implantada no mesmo ambiente do fluxo POST /access-token (ou seja, no mesmo ambiente da API OAuth, que já vem criada no seu Manager).

Como configurar uma API Identity?

A configuração de uma API Identity segue os mesmos passos de uma API normal. A diferença é que existe um passo extra no caso da Identity, em que precisamos vinculá-la à AAPI que requerirá access tokens gerados pelos fluxo Password.

Veja mais detalhes sobre o funcionamento das API Identity aqui e sobre como configurá-la aqui.

Veja mais

  • Detalhamos as chamadas necessárias para obter access tokens pelo fluxo Password aqui.

  • Se quiser ler mais sobre as diferenças entre os diferentes fluxos de OAuth, acesse The OAuth 2.0 Authorization Framework.

Thanks for your feedback!
EDIT
How useful was this article to you?