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