O que é o OAuth? Saiba como este protocolo o ajuda no online
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.
Bom artigo. Congrats.
Deixo apenas uma correcção: em “O OAuth (Open Authentication) é um protocolo de Autorização (e não de autenticação”, Open Authentication devia ser Open Authorization (além de que a própria frase não faria sentido).
Talvez fosse boa ideia mencionar também que o OAuth com algum fornecedor (no v/ artigo, Servidor de Autorização) deve ser feito apenas quando temos a certeza que não iremos desistir desse fornecedor no futuro. Caso contrário, podemos perder o acesso às contas com que nos autenticávamos via OAuth com esse fornecedor.
Embora seja pouco provável que alguém desista de uma conta Google, talvez seja mais provável que se desista de uma conta Facebook (e do Twitter/X então nem se fala).
Isso, obrigado.
Só faltou dizeres qual o interesse que as aplicações de terceiros têm em aceder aos recursos de um utilizador de outro serviço serviço, quando este é por exemplo o Facebook ou a Google? Neste mundo ninguém dá nada a ninguém sem esperar algo em troca.
Normalmente o Access Token tem especificados quais os recursos do Servidor de Autorização (Facebook, Google, whatever) a que será dada autorização de acesso; por exemplo, email, foto e nome (o Facebook apresenta um ecrã onde se pode escolher a quais destes elementos será dado acesso, sendo apenas o email obrigatório, se bem me lembro). O Resource Server recebe dados do Authorization Server, e não o contrário.
O que tem o Facebook, Google, ou outra big tech Z da vida (uso Z, porque X já foi está em uso pelo Elon Musk) em servir autorizações OAuth? 1- Z fica bem vista, por suportar um protocolo já bastante disseminado e usado; 2- Dissuadir os utilizadores de Z, que usem Z para login noutras apps, de poderem simplesmente fartarem-se e cancelar a sua conta em Z; 3- Z dá ao utilizador a ideia de que os seus dados são seus, e não de Z (embora o Digital Services Act venha estabelecer que Z é também responsável pelos conteúdos que aloja).
Outras razões haverá, mas penso que estas bastarão para marcar o ponto.
Obrigado. Era uma dúvida que já tinha há muito tempo. Esclarecido q.b.
Errado. É um protocolo de autenticação e autorização.
OAuth is the industry-standard protocol for authorization