Português (Portugal)
  • uri de redirecionamento
  • callback
  • código de autorização
  • fluxo de código
  • oidc
  • pkce

Compreender o URI de Redirecionamento e o Fluxo de Código de Autorização no OpenID Connect (OIDC)

Vamos dar uma olhada mais de perto no URI de redirecionamento, pois é um componente de segurança crítico no processo de autenticação OIDC.

Charles
Charles
Developer

Pare de perder semanas com autenticação de utilizadores
Lance aplicações seguras mais rapidamente com o Logto. Integre a autenticação de utilizadores em minutos e concentre-se no seu produto principal.
Começar
Product screenshot

O que é um URI de Redirecionamento?

Um URI de Redirecionamento, também conhecido como URL de Resposta, é um componente de segurança crítico no processo de autenticação OIDC. Ele especifica o URL para onde os utilizadores são enviados após assinarem com sucesso através de um fornecedor OIDC. Mais importante ainda, é onde sua aplicação recebe o código de autorização necessário para obter tokens.

Confira a wiki do URI de Redirecionamento para mais detalhes.

O que é o Fluxo de Código de Autorização?

O Fluxo de Código de Autorização (definido na RFC 6749 do OAuth 2.0, seção 4.1) é um método fundamental de autenticação no OIDC. Envolve a troca de um código de autorização por um token de acesso e, opcionalmente, um token de atualização. Este fluxo é adequado para aplicações que podem manter com segurança um segredo de cliente, como aplicações web do lado do servidor.

Confira a wiki do Fluxo de Código de Autorização para mais detalhes.

Como o URI de Redirecionamento funciona no Fluxo de Código de Autorização?

No Fluxo de Código de Autorização, o URI de Redirecionamento é o destino para o qual o fornecedor OIDC envia o código de autorização após o utilizador autenticar-se com sucesso. Deve ser pré-registrado com o fornecedor OIDC para garantir segurança e prevenir redirecionamentos não autorizados.

Veja como registrar um URI de Redirecionamento no Logto Console: redirect-uri

Ao iniciar uma sessão de assinatura:

  1. Pedido de autorização: A sua aplicação direciona o utilizador para o ponto final de autorização do fornecedor OIDC, incluindo parâmetros como client_id, response_type, scope e o redirect_uri.
  2. Autenticação do utilizador: O utilizador autentica-se com o fornecedor OIDC.
  3. Entrega do código de autorização: Após uma autenticação bem-sucedida, o fornecedor OIDC redireciona o utilizador para o redirect_uri especificado, incluindo um código de autorização como um parâmetro de consulta.

O fornecedor OIDC valida o redirect_uri contra a lista de URIs pré-registrados. Se houver uma discrepância, um erro invalid_redirect_uri será retornado, aumentando a segurança ao prevenir que endpoints não autorizados recebam tokens.

Melhores práticas para URIs de Redirecionamento

Em casos de uso na vida real, uma prática comum recomendada é declarar uma página "Callback" dedicada e associar uma rota/link profundo que permita acesso direto de externo. Este link deve ser usado como o URI de redirecionamento.

Assumindo que você tenha uma aplicação web de página única que está a funcionar em https://my-app.com, então geralmente o URI de redirecionamento seria declarado como https://my-app.com/callback

Ou se for uma aplicação móvel nativa, então o URI de redirecionamento geralmente começa com um esquema personalizado, por exemplo, com.company://myapp/callback

Outras melhores práticas incluem:

  • Evitar curingas: Não use padrões curinga em URIs de redirecionamento. Liste explicitamente todos os URIs permitidos para prevenir acesso não autorizado.
  • Combinação exata: Certifique-se de que o URI de redirecionamento corresponda exatamente ao registrado no fornecedor OIDC. Até mesmo uma barra final pode causar uma discrepância.

Lidar com callback de assinatura

Para lidar com o código de autorização retornado para o seu redirect_uri, siga estes passos:

  1. Extrair o código de autorização: Recupere o parâmetro de código da string de consulta do URI de redirecionamento.

  2. Trocar o código de autorização por tokens: Componha uma solicitação POST para o ponto final de token do fornecedor OIDC, incluindo:

    • client_id: O ID da sua aplicação no fornecedor OIDC
    • code: O código de autorização recebido do URI de redirecionamento
    • code_verifier: Uma string aleatória gerada no cliente
    • redirect_uri: O mesmo URI usado na solicitação de autorização
    • grant_type: O tipo de concessão, geralmente authorization_code

Solicitação de troca de token exemplar em JavaScript

Simplificar o processo de troca de código no Logto utilizando os SDKs do Logto

Os SDKs do Logto são kits de desenvolvimento escritos em uma linguagem de programação ou framework específico, por exemplo, Logto React SDK, Next.js SDK e Swift SDK. Usar um SDK pode simplificar muito as coisas, apenas chamando uma ou duas funções.

Aqui está um exemplo de componente "Callback" em React usando o SDK oficial do Logto para React:

Os guias de integração do SDK podem ser encontrados nos docs de início rápido do Logto.

Resumo: por que é importante dominar URIs de Redirecionamento no OIDC

Compreender URIs de Redirecionamento no OIDC com o fluxo de código de autorização é crucial para assegurar e otimizar seus processos de autenticação. Ao registrar URIs de redirecionamento confiáveis e lidar com callbacks de assinatura de forma eficiente, você pode garantir uma experiência perfeita e segura para seus utilizadores enquanto simplifica seus esforços de desenvolvimento com os SDKs do Logto.