ASP.NET Core 6 Azure AD认证报错:需配置OpenIdConnectOptions相关参数
解决ASP.NET Core 6中Azure AD认证+Identity的OpenIdConnect配置异常
异常提示明确要求必须为OpenIdConnectOptions配置Authority、MetadataAddress等核心参数,结合Azure AD认证场景,以下是具体修复方案:
1. 补充Azure AD配置项到appsettings.json
先在配置文件中添加Azure AD的基础信息(这些值可从Azure门户的应用注册页面获取):
"AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "你的租户ID", "ClientId": "你的应用客户端ID", "CallbackPath": "/signin-oidc" }
2. 在Program.cs中正确配置OpenIdConnect
结合Identity的使用,需在认证服务中明确配置OpenIdConnect参数,示例代码如下:
var builder = WebApplication.CreateBuilder(args); // 添加Identity服务 builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); // 读取Azure AD配置节点 var azureAdSection = builder.Configuration.GetSection("AzureAd"); // 配置认证服务,添加OpenIdConnect方案 builder.Services.AddAuthentication() .AddOpenIdConnect(options => { // 配置Authority(核心必填项) options.Authority = $"{azureAdSection["Instance"]}{azureAdSection["TenantId"]}"; options.ClientId = azureAdSection["ClientId"]; options.CallbackPath = azureAdSection["CallbackPath"]; options.ResponseType = "code"; options.SaveTokens = true; // 可选:添加需要获取的用户信息范围 options.Scope.Add("email"); options.Scope.Add("profile"); }); var app = builder.Build(); // 中间件顺序:认证在前,授权在后 app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); app.Run();
关键配置说明
- Authority:格式为
https://login.microsoftonline.com/{TenantId},若为多租户应用,可将TenantId替换为common。 - 若不想手动拼接
Authority,也可直接配置MetadataAddress,值为https://login.microsoftonline.com/{TenantId}/v2.0/.well-known/openid-configuration,OpenIdConnect会自动从该地址拉取认证配置。 - 必须保证
UseAuthentication中间件在UseAuthorization之前执行,否则认证逻辑不会生效。
内容的提问来源于stack exchange,提问作者Đặng Đức
相关产品推荐
相关产品推荐

