Compreendendo o Redirect URI e o 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 crítico de segurança no processo de autenticação OIDC.
O que é um Redirect URI?
Um Redirect URI, também conhecido como URL de Resposta, é um componente crítico de segurança no processo de autenticação OIDC. Ele especifica o URL para onde os usuários são enviados após efetuarem login com sucesso através de um provedor OIDC. Mais importante, é onde sua aplicação recebe o código de autorização necessário para obter tokens.
Confira 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 do OAuth 2.0, seção 4.1) é um método de autenticação fundamental no OIDC. Envolve a troca de um código de autorização por um token de acesso e, opcionalmente, um token de atualização. Esse fluxo é adequado para aplicações que podem manter com segurança um segredo de cliente, como aplicações web do lado do servidor.
Confira o Auth Wiki > 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 evitar redirecionamentos não autorizados.
Veja como você pode registrar um Redirect URI no Console Logto:
Ao iniciar um login:
- Solicitação de autorização: Sua aplicação direciona o usuário para o endpoint de autorização do provedor OIDC, incluindo parâmetros como
client_id
,response_type
,scope
e oredirect_uri
. - Autenticação do usuário: O usuário se autentica com o provedor OIDC.
- 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 parâmetro de consulta.
O provedor OIDC valida o redirect_uri
contra a lista de URIs pré-registradas. Se houver uma incompatibilidade, um erro invalid_redirect_uri
será retornado, aumentando a segurança ao impedir que endpoints não autorizados recebam tokens.
Melhores práticas para Redirect URIs
Em casos de uso reais, uma prática comum é declarar uma página dedicada de "Callback" e associar um roteador / link profundo que permita acesso direto de fora. Este link deve ser usado como o redirect URI.
Supondo que você tenha um aplicativo web de página única que está rodando em https://my-app.com
, geralmente o redirect URI seria declarado como https://my-app.com/callback
Ou se for um aplicativo móvel nativo, então o redirect URI geralmente começa com um esquema personalizado, por exemplo, com.company://myapp/callback
Outras melhores práticas incluem:
- Evite curingas: Não use padrões de curinga nos redirect URIs. Liste explicitamente todos os URIs permitidos para evitar acesso não autorizado.
- Corresponda exatamente: Certifique-se de que o redirect URI corresponde exatamente com o registrado no provedor OIDC. Mesmo uma barra final pode causar uma incompatibilidade.
Lidar com o callback de login
Para lidar com o código de autorização retornado para o seu redirect_uri
, siga estes passos:
-
Extraia o código de autorização: Recupere o parâmetro de código da linha de consulta do redirect URI.
-
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
: O ID de sua aplicação no provedor OIDCcode
: O código de autorização recebido do redirect URIcode_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
Exemplo de solicitação de troca de token em JavaScript
Simplifique o processo de troca de código no Logto utilizando os SDKs Logto
Os SDKs Logto são kits de desenvolvimento escritos em uma linguagem de programação ou framework específica, por exemplo, Logto React SDK, Next.js SDK e Swift SDK. Usar um SDK pode simplificar muito as coisas, bastando chamar uma ou duas funções.
Aqui está um exemplo de componente React "Callback" usando o SDK React oficial do Logto:
Guias de integração com SDK podem ser encontrados na Logto Docs > Quick-starts.
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 de forma eficiente com callbacks de login, você pode garantir uma experiência fluida e segura para seus usuários enquanto simplifica seus esforços de desenvolvimento com os SDKs Logto.