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

使用MicrosoftIdentityWebApi认证时MSAL获取的access token报401未授权

问题根因

你当前获取的AccessToken是颁发给Microsoft Graph API的,无法通过你自有Web API的身份校验,所以返回401未授权。

需要补充的配置和修改项:

  1. Azure应用注册侧配置

    • 进入Azure门户的「应用注册」页面,找到你当前使用的ClientId对应的应用
    • 切换到「公开API」板块,点击「添加作用域」,按照提示设置作用域名称(比如Access.Api),配置为允许所有用户同意,状态设置为启用,最终生成的完整作用域格式为api://{你的ClientId}/Access.Api
  2. 代码中获取Token的逻辑修改
    你当前获取Token时传入的scopes是空数组,默认会申请Graph的默认权限,需要将scopes替换为你上一步创建的自有API作用域:

    // 替换原有空scopes配置
    string[] scopes = new string[] { "api://2f0d9252-e207-4d7f-b4da-0cc618e77c93/Access.Api" };
    
  3. 服务配置校验
    确认Startup中身份验证配置明确绑定AzureAd配置节,避免读取配置错误:

    services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd");
    

排障小技巧

如果修改后还是报错,可以将获取到的AccessToken复制到JWT解析工具中,核对以下两个字段:

  • aud(受众)字段值必须和你appsettings.json中配置的Audience一致
  • scp(权限)字段必须包含你刚才定义的自有API作用域

内容的提问来源于stack exchange,提问作者Anthony Earl R. Cuartero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:45:07