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.
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.
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 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.
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:
client_id, response_type, scope e o redirect_uri.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.
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:
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, geralmente authorization_codeOs 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.
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.