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

ASP.NET Core MVC集成Azure AD B2C出现登录循环及关联失败问题

问题:ASP.NET Core MVC集成Azure AD B2C登录循环与关联失败错误

我正尝试在ASP.NET Core MVC应用中集成Azure AD B2C,初始可显示登录页面,但输入用户名密码点击登录后陷入循环;点击浏览器停止加载按钮后,首页显示“处理请求时出错(详情:关联失败)”。

登录后循环并显示关联失败

Program.cs代码

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAdB2C"));
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages()
    .AddMicrosoftIdentityUI();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

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

app.UseRouting();

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

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

app.Run();

控制台重复输出日志(已翻译)

Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter: 信息: IDX10245: 从验证后的令牌创建声明身份: '[类型为'Microsoft.IdentityModel.JsonWebTokens.JsonWebToken'的PII已隐藏。]'。
Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter: 信息: IDX21305: OpenIdConnectProtocolValidationContext.ProtocolMessage.Code为空,OpenIdConnect响应中没有可验证的'code'。
Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter: 信息: IDX21310: OpenIdConnectProtocolValidationContext.ProtocolMessage.AccessToken为空,OpenIdConnect响应中没有可验证的'token'。

解决方案

  • 修正中间件顺序:身份验证中间件必须在授权中间件之前执行,否则未验证用户会被提前拦截,引发登录循环。调整代码如下:

    app.UseAuthentication();
    app.UseAuthorization();
    
  • 验证Azure AD B2C配置:确认appsettings.json中的AzureAdB2C配置项与Azure门户信息完全匹配:

    • Instance、Domain、ClientId需对应应用注册的实际值
    • SignUpSignInPolicyId正确设置为你的用户流ID
    • 重定向URI(回调地址)必须与应用注册中配置的一致,且必须使用HTTPS协议
  • 启用详细日志排查:添加代码显示完整PII信息,定位具体错误细节:

    // 在builder.Build()之前添加
    builder.Services.AddLogging(logging =>
    {
        logging.AddConsole();
        logging.SetMinimumLevel(LogLevel.Debug);
    });
    Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
    
  • 确认Razor Pages映射:确保MapRazorPages()在路由配置后正确添加,Microsoft Identity UI依赖Razor Pages处理登录回调、注销等流程,避免路由冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:27:38