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

.Net Core 3.1使用OpenIDConnect认证跳转Account/Login报错原因问询

问题原因

该跳转是Cookie认证方案的默认行为,核心问题出在认证配置的DefaultChallengeScheme参数:

  • 你在AddAuthentication配置中将DefaultChallengeScheme设为了CookieAuthenticationDefaults.AuthenticationScheme,也就是Cookie认证方案作为未登录时的默认挑战处理逻辑
  • Cookie认证方案的默认未登录跳转路径就是/Account/Login,你的项目里没有实现对应路径的接口,所以返回404错误
  • 你虽然注册了OpenIDConnect认证方案,但没有指定它作为挑战方案,所以访问加了[Authorize]特性的接口时,不会触发OIDC的身份认证跳转逻辑,只会走Cookie的默认跳转。

修复方法

方法1:修改全局默认挑战方案

把AddAuthentication中的DefaultChallengeScheme改为你注册OIDC时指定的方案名test即可:

services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    // 替换默认挑战方案为OIDC方案
    options.DefaultChallengeScheme = "test";
})

修改后触发未登录挑战时,会直接跳转到你配置的OIDC认证地址,不会再走/Account/Login路径。

方法2:单独为指定接口指定认证方案

如果你不想修改全局配置,也可以直接在[Authorize]特性中指定使用OIDC方案:

[Authorize(AuthenticationSchemes = "test")]
public IActionResult Login()
{
    return View();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:39:01