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

ASP.NET Core应用配置Azure AD B2C认证时遇错误求助

Azure AD B2C认证配置故障排查请求

我已完成Azure AD B2C租户创建、应用注册等必要步骤,为ASP.NET Core Web应用配置B2C认证时遇到错误(错误截图:认证错误截图)。查阅Microsoft Learn及其他教程后,发现他人采用相同方法和配置可正常运行,求帮忙排查故障原因。

Program.cs 配置代码

var builder = WebApplication.CreateBuilder(args);

// builder.Services.AddDistributedMemoryCache();

// Add services to the container.
builder.Services.AddControllersWithViews();

// builder.Services.Configure<CookiePolicyOptions>(options =>
//    {
//        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
//        options.CheckConsentNeeded = context => true;
//        options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
//        // Handling SameSite cookie according to https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-3.1
//        options.HandleSameSiteCookieCompatibility();
//    });

builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, Constants.AzureAdB2C);
        // .EnableTokenAcquisitionToCallDownstreamApi()
        // .AddInMemoryTokenCaches();

// builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
//     .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAdB2C"));

// Add the authorization policies
builder.Services.AddAuthorization(options =>
        {
            options.FallbackPolicy = options.DefaultPolicy;
        });

builder.Services.AddControllersWithViews(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        });
        
builder.Services.AddRazorPages()
                .AddMicrosoftIdentityUI();

// Configuring appsettings section AzureAdB2C, into IOptions
// builder.Services.AddOptions();
// builder.Services.Configure<OpenIdConnectOptions>(builder.Configuration.GetSection("AzureAdB2C"));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

appsettings.json 配置内容

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AzureAdB2C": {
      "Instance": "https://partnerportal.b2clogin.com",
      "ClientId": "d5f02334-abcd-4414-b34c-460f6e4b5e19",
      "Domain": "partnerportal.onmicrosoft.com",
      "SignInPolicyId": "B2C_1_ppp_signin_demo",
      "CallbackPath":"/sigin-oidc"
  }
}

可能的故障排查方向

  • 拼写错误检查:appsettings.json里的CallbackPath写成了/sigin-oidc,正确应为/signin-oidc(少了一个'n'),这会导致回调地址不匹配,直接中断认证流程。
  • 常量值验证:确认Constants.AzureAdB2C常量的字符串值是否和配置文件中的AzureAdB2C节点名称完全一致,避免配置读取失败。
  • 应用注册回调地址:检查Azure AD B2C应用注册中设置的重定向URI是否包含修正拼写后的https://<你的域名>/signin-oidc,本地开发需确保添加https://localhost:<端口>/signin-oidc。
  • 策略有效性:确认B2C_1_ppp_signin_demo用户流/自定义策略已在B2C租户中正确创建并发布,且名称拼写完全一致。
  • HTTPS运行要求:本地开发时确保应用以HTTPS模式启动,Azure AD B2C对非localhost的回调地址强制要求HTTPS,统一使用HTTPS可避免兼容性问题。
  • 中间件顺序确认:当前Program.cs中的中间件顺序UseRouting→UseAuthentication→UseAuthorization符合规范,无需调整,但需确保没有未注释的冲突配置干扰认证逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:35:16