Logo Logo
GitHub Designed by Logto

O que é o fluxo híbrido (hybrid flow)?

O fluxo híbrido (hybrid flow) é um processo de autenticação (authentication) que combina as características do Fluxo de código de autorização (Authorization code flow) e do Fluxo implícito (Implicit flow) . Vale a pena notar que o fluxo híbrido (hybrid flow) não faz parte da especificação do OAuth 2.0 , mas é uma extensão fornecida pelo OpenID Connect (OIDC) .

Este fluxo é projetado para fornecer um equilíbrio entre segurança e usabilidade para a autenticação (authentication) do utilizador. No entanto, o fluxo híbrido (hybrid flow) não é recomendado para novas aplicações devido às considerações de segurança associadas ao fluxo implícito (implicit flow). Uma alternativa popular ao fluxo híbrido (hybrid flow) é usar o fluxo de autorização (authorization code flow) com Prova de Chave para Troca de Código (PKCE) para melhor segurança.

Como funciona o fluxo híbrido (hybrid flow)?

Aqui estão os principais passos do fluxo híbrido (hybrid flow):

  1. Semelhante a outros fluxos OIDC, o fluxo híbrido (hybrid flow) começa com o Cliente iniciando um Pedido de autenticação (Authentication request) para o OpenID Provider (OP) .

    Nota: O cliente deve incluir o parâmetro response_type com a combinação de code e pelo menos um de id_token ou token, o que significa que há três combinações possíveis:

    • code id_token: O cliente espera um código de autorização (authorization code) e um ID token.
    • code token: O cliente espera um código de autorização (authorization code) e um access token.
    • code id_token token: O cliente espera um código de autorização (authorization code), um ID token e um access token.

    O requisito é autoexplicativo: o cliente espera tanto um código de autorização (authorization code) quanto um ou mais tokens, que correspondem ao fluxo de autorização (authorization code flow) e ao fluxo implícito (implicit flow), respectivamente.

  2. O utilizador autentica-se no OpenID Provider (OP) .

  3. O OpenID Provider (OP) redireciona o utilizador de volta para a aplicação cliente com o código de autorização (authorization code) e os tokens solicitados.

  4. A aplicação cliente processa os tokens e pode usá-los para aceder a recursos protegidos em nome do utilizador; também pode usar o código de autorização (authorization code) para obter tokens adicionais através do Pedido de token (Token request) .

Aqui está um diagrama de sequência simplificado do fluxo híbrido (hybrid flow):

Aqui está um exemplo não normativo de um pedido de autenticação do fluxo híbrido (hybrid flow):

GET /authorize?response_type=code%20id_token
  &client_id=YOUR_CLIENT_ID
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcallback
  &scope=openid%20profile%20email
  &nonce=123456
  &state=abc123 HTTP/1.1
Host: your-openid-provider.com

Parâmetros chave em um pedido de autenticação do fluxo híbrido (hybrid flow)

O pedido de autenticação do fluxo híbrido (hybrid flow) inclui os seguintes parâmetros chave:

  • response_type: O valor deve ser uma combinação de code e pelo menos um de id_token ou token. Por exemplo, code id_token ou code token.
  • client_id: O identificador do cliente emitido pelo OpenID Provider (OP) (authorization server).
  • redirect_uri: O URI onde o authorization server envia o utilizador após o processo de autenticação (authentication).
  • scope: Os scopes (permissões) solicitados para os tokens.
  • resource: O parâmetro opcional que especifica o Indicador de recurso (Resource indicator) para os recursos solicitados. O authorization server precisa suportar RFC 8707 para usar este parâmetro.

Para a lista completa de parâmetros e suas descrições, veja Autenticação usando o Fluxo Híbrido .

Considerações de segurança

O fluxo híbrido (hybrid flow) inclui o fluxo implícito (implicit flow), que é conhecido por suas limitações de segurança. Os tokens ainda são transmitidos através do canal frontal (navegador), o que pode expô-los a potenciais ataques. O fluxo implícito (implicit flow) será descontinuado no OAuth 2.1 devido a essas preocupações.

Fluxo de código de autorização (Authorization code flow) com Prova de Chave para Troca de Código (PKCE) é a alternativa recomendada ao fluxo híbrido (hybrid flow). Ele fornece uma maneira mais segura de autenticar utilizadores sem expor tokens no canal frontal.

Veja também