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

IdentityServer4 登录回调返回404 UserInfo端点未触发问题求助

IdentityServer4回调404问题修复方案

核心原因是OpenID Connect认证中间件未正确处理/signin-central路径的请求,修复步骤如下:

  • 确认OIDC方案名与回调路径匹配
    你使用的回调路径/signin-central对应OIDC方案名应为central,无需额外修改默认挑战配置,客户端配置示例如下:
    builder.Services.AddAuthentication(options =>
    {
        // 保持原有默认配置不变,无需调整DefaultChallengeScheme
        options.DefaultScheme = "Cookies";
    })
    .AddCookie("Cookies")
    .AddOpenIdConnect("central", options =>
    {
        options.Authority = "你的IdentityServer服务端地址";
        options.ClientId = "你在数据库中配置的客户端ID";
        options.ClientSecret = "你在数据库中配置的客户端密钥";
        options.ResponseType = "code";
        options.SaveTokens = true;
        // 若OIDC方案名不是central,需手动指定回调路径
        // options.CallbackPath = "/signin-central";
        options.GetClaimsFromUserInfoEndpoint = true;
        options.Scope.Add("openid");
        options.Scope.Add("profile");
        // 添加你需要的其他自定义scope
    });
    
    触发认证时显式指定方案名即可,无需修改默认配置:比如在Action上标记[Authorize(AuthenticationSchemes = "central")],或返回return Challenge("central");。
  • 确认服务端数据库回调地址完全匹配

    回调地址大小写敏感,必须与客户端请求地址完全一致
    检查服务端数据库ClientRedirectUris表中对应客户端的回调地址,必须完全等于https://localhost:44384/signin-central,不允许有多余斜杠、端口或协议不匹配的情况。

  • 确认客户端中间件顺序正确
    认证中间件必须放在路由之后、授权之前、端点映射之前,顺序错误会导致认证请求被路由系统直接拦截返回404,正确配置示例:
    app.UseRouting();
    
    app.UseAuthentication();
    app.UseAuthorization();
    
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    app.MapRazorPages();
    
  • UserInfo端点未触发说明
    该逻辑在OIDC中间件完成code换token流程后自动执行,回调404问题修复后,该问题会同步解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:07