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:
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.