AzureADB2CDefaults已过时,如何使用Microsoft.Identity.UI替换?
解决方案
1. 确认依赖包
确保项目已安装 Microsoft.Identity.Web 和 Microsoft.Identity.Web.UI(如果需要内置登录/注销UI)这两个NuGet包,它们是当前整合Azure AD B2C的官方推荐依赖。
2. 替换过时的认证配置
无需再使用已过时的AzureADB2CDefaults,通过以下代码完成替换,同时保持与Azure AD B2C的关联:
配置文件(appsettings.json)确保包含完整B2C参数
"AzureAdB2C": { "Instance": "https://你的租户域名.b2clogin.com/", "Domain": "你的租户域名.onmicrosoft.com", "TenantId": "你的租户ID", "ClientId": "你的应用Client ID", "CallbackPath": "/signin-oidc", "SignUpSignInPolicyId": "你的用户流策略ID(比如B2C_1_susi)" }
替换Startup/Program.cs中的认证代码
如果是.NET 6+的Program.cs:
// 添加Microsoft Identity Web的B2C认证,指定方案名保持与原代码兼容 builder.Services.AddAuthentication() .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAdB2C"), authenticationScheme: "AzureADB2C", // 对应原代码中的AzureADB2CDefaults.AuthenticationScheme值 openIdConnectSchemeName: "AzureADB2COpenId"); // 设置默认认证/挑战方案 builder.Services.Configure<AuthenticationOptions>(options => { options.DefaultScheme = "AzureADB2C"; options.DefaultChallengeScheme = "AzureADB2C"; }); // 如果需要启用内置登录UI,添加以下代码 builder.Services.AddControllersWithViews().AddMicrosoftIdentityUI();
如果是旧版Startup.cs:
public void ConfigureServices(IServiceCollection services) { // ...其他服务配置 services.AddAuthentication() .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAdB2C"), authenticationScheme: "AzureADB2C", openIdConnectSchemeName: "AzureADB2COpenId"); services.Configure<AuthenticationOptions>(options => { options.DefaultScheme = "AzureADB2C"; options.DefaultChallengeScheme = "AzureADB2C"; }); services.AddControllersWithViews().AddMicrosoftIdentityUI(); }
3. 关键说明
- 手动指定
authenticationScheme: "AzureADB2C"可保持与原有代码中方案名的兼容,无需修改其他引用该方案的代码。 AddMicrosoftIdentityWebApp会自动识别配置中的B2C参数(如SignUpSignInPolicyId),自动适配B2C认证流程,无需额外配置OpenID Connect细节。- 你之前尝试的方案名"AzureADB2"是错误的,必须与配置的认证方案名一致,或直接使用上述代码中的"AzureADB2C"。
内容的提问来源于stack exchange,提问作者Jackington
相关产品推荐
相关产品推荐

