理解 OpenID Connect (OIDC) 中的重定向 URI 和授权码流程
让我们仔细看看重定向 URI,因为它是 OIDC 认证过程中的关键安全组件。
让我们仔细看看重定向 URI,因为它是 OIDC 认证过程中的关键安全组件。
重定向 URI,又称为回复 URL,是 OIDC 认证过程中的关键安全组件。它指定了用户在通过 OIDC 提供商成功登录后被发送到的 URL。更重要的是,它是你的应用程序接收获取令牌所需的授权码的地方。
查看 重定向 URI 维基 以获取更多详细信息。
授权码流程(在 OAuth 2.0 RFC 6749,第 4.1 节 中定义)是 OIDC 中的基本认证方法。它涉及交换授权码以获取访问令牌,并可选择获取刷新令牌。此流程适用于能够安全维护客户端密钥的应用程序,例如服务器端 Web 应用程序。
查看 授权码流程维基 以获取更多详细信息。
在授权码流程中,重定向 URI 是 OIDC 提供商在用户成功认证后发送授权码的目的地。它必须在 OIDC 提供商处预注册,以确保安全并防止未经授权的重定向。
这是你如何在 Logto 控制台 中注册一个重定向 URI 的方法:

当启动登录时:
client_id、response_type、scope 和 redirect_uri 等参数。redirect_uri,并在查询参数中包含授权码。OIDC 提供商会验证 redirect_uri 是否与预注册的 URI 列表匹配。如果不匹配,将返回 invalid_redirect_uri 错误,从而提高安全性,防止未经授权的终端接收令牌。
在实际应用中,常见的最佳实践是声明一个专用的“回调”页面,并关联一个允许从外部直接访问的路由/深链。该链接应用作重定向 URI。
假设你有一个运行在 https://my-app.com 的单页 Web 应用,那么通常重定向 URI 将声明为 https://my-app.com/callback
或者如果是一个原生移动应用,重定向 URI 通常以自定义方案开头,例如 com.company://myapp/callback
其他最佳实践包括:
若要处理返回到 redirect_uri 的授权码,请按照以下步骤操作:
提取授权码:从重定向 URI 的查询字符串中检索 code 参数。
将授权码兑换为令牌:组成一个 POST 请求到 OIDC 提供商的令牌端点,包括:
client_id:应用程序在 OIDC 提供商中的 IDcode:从重定向 URI 收到的授权码code_verifier:客户端生成的随机字符串redirect_uri:在授权请求中使用的相同 URIgrant_type:通常是 authorization_code 的授权类型Logto SDK 是用特定编程语言或框架编写的开发工具包,例如 Logto React SDK、Next.js SDK 和 Swift SDK。使用 SDK 可以通过调用一两个函数大大简化操作。
这是一个使用 Logto 官方 React SDK 的 React "Callback" 组件示例:
SDK 集成指南可以在 Logto 快速入门文档 中找到。
了解 OIDC 中授权码流程中的重定向 URI 对于保护和优化你的认证过程至关重要。通过注册可信的重定向 URI 并有效处理登录回调,你可以确保为用户提供无缝且安全的体验,同时通过 Logto SDK 简化开发工作。