Sobes.tech
Middle

O que é autenticação OAuth e como ela funciona?

sobes.tech IA

Resposta da IA

OAuth é um padrão aberto de autorização. Permite ao utilizador conceder acesso limitado aos seus dados, armazenados noutra plataforma (servidor de recursos), a uma aplicação de terceiros, sem precisar de partilhar as suas credenciais (login/senha) com essa aplicação.

O funcionamento do OAuth baseia-se na emissão de "tokens de acesso" em vez de credenciais. O fluxo típico funciona da seguinte forma:

  1. Pedido de autorização: O utilizador tenta realizar uma ação numa aplicação de terceiros que requer acesso aos dados do servidor de recursos. A aplicação inicia um pedido de autorização ao servidor de autorização do servidor de recursos.
  2. Redirecionamento para o servidor de autorização: O utilizador é redirecionado para a página do servidor de autorização.
  3. Autenticação do utilizador: O utilizador autentica-se no servidor de autorização (se ainda não o fez).
  4. Consentimento do utilizador: O servidor de autorização solicita ao utilizador permissão para conceder à aplicação de terceiros um determinado nível de acesso aos seus dados (escopos). O utilizador aceita ou rejeita o pedido.
  5. Emissão do código de autorização: Se o utilizador aceitar, o servidor de autorização redireciona o utilizador de volta à aplicação de terceiros, fornecendo um "código de autorização".
  6. Troca do código de autorização por um token de acesso: A aplicação de terceiros, após receber o código de autorização, faz uma requisição diretamente ao servidor de autorização para trocar esse código por um "token de acesso" e opcionalmente um "token de atualização". Esta requisição é feita entre servidores, evitando o navegador do utilizador, o que aumenta a segurança.
  7. Acesso aos dados: A aplicação de terceiros usa o token de acesso obtido para fazer requisições ao servidor de recursos em nome do utilizador. Cada requisição inclui o token no cabeçalho.
  8. Validação do token: O servidor de recursos valida o token de acesso e, se for válido e corresponder aos escopos solicitados, concede acesso aos dados.

O OAuth possui vários fluxos (flows), adequados para diferentes cenários, por exemplo:

  • Authorization Code Flow: O mais seguro, usado para aplicações web com backend.
  • Implicit Flow: Obsoleto, usado para aplicações web sem backend.
  • Client Credentials Flow: Para aplicações que acessam os seus próprios recursos, e não os do utilizador.
  • Resource Owner Password Credentials Flow: Não recomendado, transmite as credenciais do utilizador à aplicação.

(Exemplo de Authorization Code Flow)

Em C#, para implementar OAuth em aplicações web, costuma-se usar bibliotecas como ASP.NET Core Identity com diferentes provedores (Google, Facebook, etc.), ou bibliotecas como IdentityServer para criar um servidor de autorização próprio.