Logo Logo
GitHub Designed by Logto

O que é o fluxo implícito (implicit flow)?

O fluxo implícito (implicit flow) do OAuth 2.0 é um método de autenticação que permite que aplicações apenas cliente (como SPAs e apps nativas) recebam tokens diretamente através de fragmentos de URL do servidor de autorização sem fornecer um segredo de cliente.

O fluxo implícito (implicit flow) é projetado para aplicações apenas cliente, porque elas funcionam completamente no navegador ou no dispositivo do usuário e não podem armazenar segredos de cliente de forma segura.

O fluxo implícito (implicit flow) foi oficialmente descontinuado no OAuth 2.1 por razões de segurança (serão mencionadas abaixo). Aplicações apenas cliente devem agora usar o Fluxo de código de autorização (Authorization code flow) com a extensão Prova de Chave para Troca de Código (PKCE) .

Como funciona o fluxo implícito (implicit flow)?

Os principais passos do fluxo implícito (implicit flow) são os seguintes:

Aviso:

  • O cliente só precisa fornecer um client_id no pedido de autorização, sem exigir um client_secret.
    Isto porque esses clientes não podem armazenar segredos de forma segura, então este fluxo não requer um segredo de cliente.

  • O parâmetro response_type é definido como token, instruindo o servidor de autorização a retornar o access token diretamente em vez de um código de autorização.
    No OIDC ( OpenID Connect (OIDC) ), o response_type é id_token ou id_token token, e o serviço de auth retornará os tokens correspondentes com base nos diferentes tipos de resposta.

  • O token é retornado diretamente no fragmento de URL. Isso significa que o token é exposto na URL e pode ser facilmente acessado por outras aplicações ou scripts.

O fluxo implícito (implicit flow) é seguro?

Não, o fluxo implícito (implicit flow) no OAuth 2.0 é geralmente considerado menos seguro do que outros fluxos como o fluxo de código de autorização (authorization code flow).

Não é recomendado para a maioria dos casos de uso devido a várias vulnerabilidades:

  • Exposição de token na URL

    • Access tokens aparecem diretamente na URL do navegador (após o símbolo #)
    • Esses tokens podem ser:
      • Salvos no histórico do navegador
      • Vazados através de cabeçalhos de referência
      • Capturados por código JavaScript malicioso na mesma página
  • Sem autenticação do cliente

    • A aplicação cliente não precisa provar sua identidade
    • Isso significa que qualquer pessoa que conheça o client_id pode se passar por um cliente legítimo
  • Sem tokens de atualização (refresh tokens)

    • Este fluxo não suporta tokens de atualização
    • Os utilizadores devem iniciar sessão novamente quando os access tokens expirarem
    • Para evitar logins frequentes, os utilizadores podem armazenar tokens de maneiras inseguras
  • Vulnerável a ataques XSS

    • Todos os tokens são manipulados no navegador
    • Se o site sofrer um ataque XSS (Cross-Site Scripting)
    • O código JavaScript dos atacantes pode facilmente roubar esses tokens

Devido a estas preocupações de segurança, o fluxo implícito (implicit flow) foi descontinuado no OAuth 2.1 . Aplicações apenas cliente devem agora usar o Fluxo de código de autorização (Authorization code flow) com a extensão Prova de Chave para Troca de Código (PKCE) .

Podes verificar O que é PKCE: dos conceitos básicos à compreensão profunda para aprender como o PKCE protege o fluxo de código de autorização (authorization code flow) para aplicações apenas cliente.

Veja também