Ter que criar contas para novos serviços é um processo chato e demorado. Então porque não utilizar as credenciais, por exemplo, do seu perfil das redes sociais? É isso que o protocolo OAuth permite fazer.
O OAuth (Open Authorization) é um protocolo de Autorização (e não de autenticação), que permite que aplicações de terceiros acedam a recursos de um utilizador num determinado serviço. Este protocolo é Usado por vários serviços na internet, que permitem/integram na autenticação contas da Google, Facebook, Twitter, entre outros.
Por exemplo, quando se autentica numa app ou site com as credenciais do Facebook, está a dar autorização para acesso aos seus dados. OAuth 2.0 é a versão mais atual.
Componentes do OAuth
- Proprietário do recurso – User
- Utilizador que autoriza o acesso da aplicação à sua conta
- Cliente (Client Application)
- Aplicação que pretende aceder à conta do utilizador.
- Servidor de Autorização (Authorization Server)
- Servidor que autentica o proprietário do recurso e emite tokens de acesso
- Servidor de Recursos (Resource Server)
- Servidor que verifica a identidade do utilizador e disponibiliza recursos solicitados
Exemplo de funcionamento do OAuth
Vamos considerar que utilizador está a aceder a uma aplicação Web e esta tem integrada autenticação de uma rede social. Para tal são realizados os passos seguintes.
- Utilizador solicita recursos numa App
- App pede autorização
- Utilizador introduz credenciais
- App passa credenciais para o Servidor de Autorização (usando chaves do OAuth)
- Se validadas as credenciais, Servidor de Autorização devolve Access Token
- App envia Access Token para o Servidor de Recursos
- Servidor de Recursos disponibiliza recursos solicitados
- App disponibiliza informação ao utilizador
O OAuth utiliza vários tipos de Token. Cada tipo de token tem um papel específico e é usado em diferentes fases do fluxo OAuth. Dois dos tipos de Token mais usados são o Access Token (Token de Acesso) e Refresh Token (Token de Renovação).
O Access Token é o principal token utilizado em OAuth para aceder a recursos protegidos. Quando uma aplicação recebe um Access Token, pode usá-lo para fazer pedidos a uma API em nome do utilizador. O Refresh Token é utilizado para obter um novo Access Token sem que o utilizador precise de se autenticar novamente.
Relativamente aos tipos de fluxo, também denominados de “authorization flows” são a forma como o Cliente recebe o Access Token do Servidor de Autorização. Há quatro tipos de fluxo:
- Fluxo Implícito
- Fluxo de Credenciais do Proprietário do Recurso
- Fluxo de Credenciais do Cliente
- Fluxo de Autorização de Dispositivos
Relativamente às vantagens de usar este protocolo, destaque para a segurança, pois as credenciais de acesso não são partilhadas com aplicações de terceiros. Controlo, pois o utilizador pode controlar quais os recursos a que a aplicação tem acesso e revogar o acesso a qualquer momento e também a flexibilidade, pois permite integrações entre diferentes plataformas e serviços de forma segura.