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

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

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

Charles
Charles
Developer

O que é um Redirect URI?

Um Redirect URI, também conhecido como Reply URL, é um componente de segurança crítico no processo de autenticação OIDC. Ele especifica o URL para onde os usuários são enviados após se autenticarem com sucesso através de um provedor OIDC. Mais importante, é onde seu aplicativo recebe o código de autorização necessário para obter tokens.

Confira a wiki do Redirect URI 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 de autenticação fundamental no OIDC. Ele 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 aplicativos que podem manter um segredo de cliente com segurança, como aplicativos web do lado do servidor.

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

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

No Fluxo de Código de Autorização, o Redirect URI é o destino para o qual o provedor OIDC envia o código de autorização após o usuário autenticar-se com sucesso. Ele deve ser pré-registrado com o provedor OIDC para garantir segurança e prevenir redirecionamentos não autorizados.

Veja como você pode registrar um Redirect URI no Logto Console: redirect-uri

Ao iniciar um login:

  1. Solicitação de autorização: Seu aplicativo direciona o usuário para o endpoint de autorização do provedor OIDC, incluindo parâmetros como client_id, response_type, scope e o redirect_uri.
  2. Autenticação do usuário: O usuário se autentica com o provedor OIDC.
  3. Entrega do código de autorização: Após a autenticação bem-sucedida, o provedor OIDC redireciona o usuário para o redirect_uri especificado, incluindo um código de autorização como um parâmetro de consulta.

O provedor OIDC valida o redirect_uri em relação à 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 Redirect URIs

Em casos de uso da vida real, uma prática comum é declarar uma página de "Callback" dedicada e associar um roteador / link profundo que permita acesso direto a partir de fontes externas. Este link deve ser usado como o redirect URI.

Assumindo que você tenha um aplicativo web de página única rodando em https://my-app.com, então normalmente o redirect URI seria declarado como https://my-app.com/callback

Ou, se for um aplicativo móvel nativo, o redirect URI 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 de curinga em redirect URIs. Liste explicitamente todos os URIs permitidos para prevenir acesso não autorizado.
  • Combinação exata: Certifique-se de que o redirect URI corresponda exatamente ao registrado no provedor OIDC. Mesmo uma barra no final pode causar uma discrepância.

Tratamento do callback de login

Para tratar o código de autorização retornado para o seu redirect_uri, siga estas etapas:

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

  2. Troque o código de autorização por tokens: Componha uma solicitação POST para o endpoint de token do provedor OIDC, incluindo:

    • client_id: A ID do seu aplicativo no provedor OIDC
    • code: O código de autorização recebido do redirect URI
    • 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 de amostra em JavaScript

Simplifique 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 ou framework de programação específico, por exemplo, Logto React SDK, Next.js SDK e Swift SDK. Utilizar um SDK pode simplificar bastante as coisas, chamando apenas uma ou duas funções.

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

Guias de integração dos SDKs podem ser encontrados na documentação de início rápido do Logto.

Recapitulação: por que é importante dominar Redirect URIs no OIDC

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