June 20, 2018
Daniel
Varanda

OAuth: Quando devo utilizar cada um dos fluxos?

O oAuth é um padrão aberto para identificação, autenticação e autorização utilizado para fazer logon em aplicativos que desejam fazer uso de APIs.O oAuth utiliza-se essencialmente de tokens:

  • CLIENT_ID
  • CLIENT_SECRET
  • GRANT_CODE
  • ACCESS_TOKEN
  • REFRESH_TOKEN

Alguns desses tokens são emitidos na criação do aplicativo e outros são emitidos a partir de um dos fluxos do oAuth, listados a seguir:

  • Client Credentials
  • Resource Owner Password Credentials
  • Authorization Code
  • Implicit
  • Refresh Token

Tokens

CLIENT_ID

Token de identificação que identifica o aplicativo que deseja utilizar as APIs.O CLIENT_ID é criado no momento de criação do aplicativo no portal do desenvolvedor.

CLIENT_SECRET

Token secreto do aplicativo, utilizado para obtenção do ACCESS_TOKEN e/ou o GRANT_CODE..O CLIENT_SECRET é criado no momento de criação do aplicativo no portal do desenvolvedor.

GRANT_CODE

Token de autenticação de uso intermediário, concedido para aplicativos de terceiros para obtenção do ACCESS_TOKEN.O GRANT_CODE é criado no processo de autenticação do fluxo Authorization Code.

ACCESS_TOKEN

Token de autenticação, comprova que houve um processo de autenticação do aplicativo e, se for o caso, do usuário do aplicativo.O ACCESS_TOKEN é fornecido como resultado do processo de autenticação.

REFRESH_TOKEN

Token utilizado para obter um novo ACCESS_TOKEN quando o mesmo estiver expirado.O REFRESH_TOKEN é criado juntamente com o ACCESS_TOKEN como resultado do processo de autenticação.

Fluxos do oAuth

Client Credentials

Fluxo utilizado por aplicativos confiáveis ou aplicativos de terceiros, onde é necessário que seja feita a autenticação apenas do aplicativo, ou seja, não é necessário autenticar o usuário do aplicativo.Esse fluxo tem como objetivo obter um ACCESS_TOKEN através do uso do CLIENT_ID e CLIENT_SECRET do aplicativo.

Resource Owner Password Credentials

Fluxo utilizado por aplicativos confiáveis, onde é necessário que seja feita a autenticação do aplicativo e do usuário do aplicativo.Esse fluxo tem como objetivo obter um ACCESS_TOKEN através do uso do CLIENT_ID e CLIENT_SECRET do aplicativo e dos dados de autenticação do usuário (exemplo: login e senha).Por se tratar de um aplicativo confiável, o login e senha do usuário pode ser digitado no próprio aplicativo.

Authorization Code

Fluxo utilizado por aplicativos de terceiros, onde é necessário que seja feita a autenticação do aplicativo e do usuário do aplicativo.Esse fluxo tem como objetivo obter um ACCESS_TOKEN através do uso do CLIENT_ID e CLIENT_SECRET do aplicativo e dos dados de autenticação do usuário (exemplo: login e senha).Por se tratar de um aplicativo de terceiro, o login e senha do usuário não podem ser digitados no aplicativo, portando, a API deve fornecer uma tela de autenticação para que o usuário digite o seu login e senha. Normalmente essa tela de autenticação é exibida através de uma janela popup.

Implicit

Fluxo utilizado por SPA (Single Page Applications) confiáveis ou de terceiros que executam em browsers e não são capazes de armazenar um CLIENT_SECRET, já que ele poderia ser facilmente recuperado do código fonte da página.Esse fluxo tem como objetivo obter um ACCESS_TOKEN através do uso do CLIENT_ID do aplicativo e, se for necessário, dos dados de autenticação do usuário (exemplo: login e senha).O ACCESS_TOKEN é retornado para o aplicativo através de uma URL de Redirecionamento (REDIRECT_URI) do aplicativo, que deve ter sido previamente cadastrada no portal do desenvolvedor.Podemos dizer que a URL de Redirecionamento é o que “autentica” o aplicativo, porém esse é o fluxo menos seguro do oAuth e deve ser utilizado com parcimônia.

Refresh Token

Fluxo utilizado para renovar um processo de autenticação quando o mesmo estiver expirado.Esse fluxo tem como objetivo obter um novo ACCESS_TOKEN através do uso do REFRESH_TOKEN.

Matriz de Uso dos Fluxos do oAuth

Obrigado pela leitura!

Voltar ao arquivo