客户端与.NET Core API的AAD认证报错问题咨询
问题修复方案
1. 替换已弃用的认证配置
你当前使用的AddAzureAD扩展属于微软已停止维护的旧版Azure AD集成方案,且默认适配场景为Web网页应用而非Web API,无法正确校验MSAL生成的访问令牌。请按以下步骤调整:
- 安装NuGet依赖包
Microsoft.Identity.Web - 替换
ConfigureServices方法中的认证配置代码:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(jwtOptions => { // 此处填写你在Azure AD中注册的API的客户端ID jwtOptions.Audience = "api://<你的API客户端ID>"; jwtOptions.TokenValidationParameters.ValidateIssuer = true; }, adOptions => { adOptions.ClientId = "<你的API客户端ID>"; adOptions.TenantId = "<你的租户ID>"; adOptions.Instance = "https://login.microsoftonline.com/"; });
2. 校验令牌参数配置
即使请求已携带令牌,令牌参数不匹配也会触发401错误,请确认以下配置:
- 客户端MSAL请求令牌时使用的Scope为API暴露的权限范围,格式为
api://<API客户端ID>/<自定义权限名>,不能使用其他资源的Scope - 令牌的受众(aud声明)与API配置的Audience值一致,可将令牌粘贴到本地JWT解析工具中确认声明内容
- 租户ID配置与令牌颁发者匹配,若使用多租户应用需对应调整颁发者校验规则
3. 中间件顺序校验
你当前的中间件排序UseCors -> UseRouting -> UseAuthentication -> UseAuthorization符合要求,无需调整。注释的内联CORS配置与当前默认CORS策略效果一致,保留现有配置即可。
内容的提问来源于stack exchange,提问作者Enzo Sambucetti
相关产品推荐
相关产品推荐

