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.
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:
Quando iniciar uma sessão:
- 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 oredirect_uri
. - Autenticação do utilizador: O utilizador autentica-se com o fornecedor OIDC.
- 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:
-
Extrair o código de autorização: Recuperar o parâmetro de código da string de consulta do redirect URI.
-
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 OIDCcode
: O código de autorização recebido do redirect URIcode_verifier
: Uma string aleatória gerada no clienteredirect_uri
: O mesmo URI usado no pedido de autorizaçãogrant_type
: O tipo de concessão, geralmenteauthorization_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.