You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中OpenIddict提示'redirect_uri'无效的问题求助

排查OpenIddict "redirect_uri is not valid" 错误

针对你遇到的问题,以下是几个关键排查点和修复建议:

1. 客户端未显式配置回调路径/RedirectUri

你的客户端代码中没有设置CallbackPath或RedirectUri,OpenIdConnect中间件默认使用/signin-oidc作为回调路径。需要确保:

  • 数据库中该客户端的RedirectUris列表包含完整的回调URL(比如https://localhost:xxxx/signin-oidc,替换xxxx为客户端实际运行的端口)
  • 或者在客户端配置中显式指定匹配的路径:
.AddOpenIdConnect(options =>
{
    // ... 其他配置
    // 显式设置回调路径,需与数据库中的RedirectUris完全一致
    options.CallbackPath = "/signin-oidc";
    // 如果使用绝对URL,直接指定:
    // options.RedirectUri = "https://localhost:44313/signin-oidc";
})

2. 数据库中RedirectUris的格式不匹配

OpenIddict对redirect_uri的验证是严格完全匹配的,需检查:

  • 必须包含完整协议(http/https)、域名、端口、路径,不能只写相对路径
  • 大小写敏感,比如/Signin-Oidc和/signin-oidc会被视为不同路径
  • 无多余斜杠或拼写错误,比如https://localhost:44313//signin-oidc(多了一个斜杠)会验证失败

3. 确认客户端实体的RedirectUris数据正确存储

检查AuthDbContext中OpenIddict客户端实体的配置,确保RedirectUris是客户端的导航属性,且数据已正确写入数据库(比如通过种子数据或后台管理界面添加的redirect_uri确实关联到了对应ClientId)。

4. 检查实际请求中的redirect_uri参数

使用浏览器开发者工具(Network面板)查看授权请求(/connect/authorize)中的redirect_uri参数,确认实际发送的URL与数据库中存储的完全一致,比如是否存在端口不一致、协议不匹配(http vs https)的情况。

额外注意:PKCE配置

虽然服务端启用了RequireProofKeyForCodeExchange(),但这不会直接导致redirect_uri错误,不过确保客户端自动发送了PKCE参数(OpenIdConnect中间件在使用AuthorizationCodeFlow时默认会处理,无需额外配置)。

内容的提问来源于stack exchange,提问作者Nirmal Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:05:42