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

Blazor WASM切换至AWS Cognito OIDC认证时遇redirectUri未定义错误

解决Blazor WASM切换AWS Cognito OIDC时的redirectUri未定义错误

这个错误核心是OIDC配置未正确加载,导致Blazor无法读取到redirectUri属性,以下是具体排查和解决步骤:

1. 核对appsettings.json配置结构

Blazor的AddOidcAuthentication默认读取Oidc配置节点,若你自定义了Aws节点,必须在代码中明确绑定,否则配置无法被正确读取:

情况1:使用默认Oidc节点

确保appsettings.json里的配置节点正确,包含所有必填属性:

{
  "Oidc": {
    "Authority": "https://你的Cognito用户池域名.auth.区域.amazoncognito.com",
    "ClientId": "你的Cognito客户端ID",
    "RedirectUri": "https://你的Blazor应用地址/authentication/login-callback",
    "PostLogoutRedirectUri": "https://你的Blazor应用地址/authentication/logout-callback",
    "ResponseType": "code",
    "Scope": "openid profile email"
  }
}

情况2:使用自定义Aws节点

如果你的配置放在Aws段,必须在Program.cs中指定绑定该节点:

builder.Services.AddOidcAuthentication(options =>
{
    // 明确绑定Aws配置节到OIDC ProviderOptions
    builder.Configuration.Bind("Aws", options.ProviderOptions);
});

此时appsettings.json的Aws节点要包含上述所有OIDC必填属性,结构不能嵌套错误。

2. 确认Cognito客户端的回调地址配置

在AWS Cognito用户池的客户端设置中:

  • 将Blazor的回调URL(如https://你的应用地址/authentication/login-callback)添加到Allowed callback URLs
  • 将登出回调URL(如https://你的应用地址/authentication/logout-callback)添加到Allowed sign-out URLs
    本地开发时,记得添加http://localhost:端口号/authentication/login-callback这类地址,端口要和Blazor运行的一致。

3. 检查Program.cs的OIDC配置代码

确保配置代码完整,没有遗漏核心属性:

builder.Services.AddOidcAuthentication(options =>
{
    // 从配置文件绑定(推荐)
    builder.Configuration.Bind("Oidc", options.ProviderOptions);
    // 若配置文件读取有问题,可临时手动设置属性排查
    // options.ProviderOptions.Authority = "https://你的Cognito域名.auth.区域.amazoncognito.com";
    // options.ProviderOptions.ClientId = "你的客户端ID";
    // options.ProviderOptions.RedirectUri = "https://你的应用地址/authentication/login-callback";
    // options.ProviderOptions.ResponseType = "code";
    // options.ProviderOptions.Scope.Add("openid");
    // options.ProviderOptions.Scope.Add("profile");
});

4. 清除浏览器缓存和本地存储

旧的认证缓存可能干扰配置读取,清空浏览器的Cookie、本地存储和缓存后,重新启动应用测试。

5. 验证Cognito OIDC端点有效性

访问Cognito的OIDC元数据地址:https://你的Cognito用户池域名.auth.区域.amazoncognito.com/.well-known/openid-configuration,确认能正常返回JSON格式的元数据,检查其中的authorization_endpoint、token_endpoint等地址是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:31:01