Português (Portugal)
  • redirect uri
  • callback
  • authorization code
  • code flow
  • oidc
  • pkce

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

Vamos dar uma olhada mais de perto no redirect URI, pois ele é 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 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 a autenticação bem-sucedida através de um fornecedor OIDC. Mais importante ainda, é onde a tua aplicação recebe o código de autorização necessário para obter tokens.

Consulta o Auth Wiki > 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 da 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 renovação. Este fluxo é adequado para aplicações que podem manter um segredo de cliente de forma segura, como aplicações web do lado do servidor.

Consulta o Auth Wiki > Authorization Code Flow para mais detalhes.

Como funciona o Redirect URI 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 fornecedor OIDC envia o código de autorização após o utilizador autenticar-se com sucesso. Ele deve ser pré-registrado com o fornecedor OIDC para garantir a segurança e prevenir redirecionamentos não autorizados.

Aqui está como podes registar um Redirect URI no Logto Console: redirect-uri

Quando iniciar uma sessão:

  1. Pedido de autorização: A tua aplicação direciona o utilizador para o endpoint 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 a autenticação bem-sucedida, o fornecedor OIDC redireciona o utilizador para o redirect_uri especificado, incluindo um código de autorização como 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, melhorando a segurança ao impedir que endpoints não autorizados recebam tokens.

Melhores práticas para Redirect URIs

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

Assumindo que tens uma aplicação web de página única que está a correr em https://my-app.com, então normalmente o redirect URI seria declarado como https://my-app.com/callback

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

Outras boas práticas incluem:

  • Evitar curingas: Não usar padrões curinga em redirect URIs. Listar explicitamente todos os URIs permitidos para evitar acesso não autorizado.
  • Correspondência exata: Garantir que o redirect URI corresponda exatamente com o registrado no fornecedor OIDC. Mesmo uma barra final pode causar uma discrepância.

Lidar com o retorno de chamada de sign-in

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

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

  2. Trocar o código de autorização por tokens: Compor um pedido POST para o endpoint de token do fornecedor OIDC, incluindo:

    • client_id: O ID da tua aplicação no fornecedor 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 no pedido de autorização
    • grant_type: O tipo de concessão, geralmente authorization_code

Pedido de troca de token de amostra em JavaScript

Simplifica o processo de troca de código no Logto aproveitando os SDKs do Logto

Os SDKs do Logto são o kit de desenvolvimento escrito numa 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 React do Logto:

Os guias de integração do SDK podem ser encontrados no Logto Docs > Quick-starts.

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

Entender os Redirect URIs no OIDC com o fluxo de código de autorização é crucial para proteger e otimizar os teus processos de autenticação. Ao registrar URIs de redirecionamento confiáveis e lidar com callbacks eficientemente, podes garantir uma experiência contínua e segura para os teus utilizadores enquanto simplificas os teus esforços de desenvolvimento com os SDKs do Logto.