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

添加Sites.Read.All后JWT受众与范围变更,需兼容Graph API

问题场景

我的应用采用MSAD登录,原本通过自定义API权限获取令牌,为调用Microsoft Graph API访问SharePoint数据,在登录范围中添加了Sites.Read.All后,JWT令牌的受众(aud)和权限范围(scp)发生变更。需要保留原有的受众与权限范围配置,同时确保能正常调用Microsoft Graph API。


旧登录配置

issuer: 'https://login.microsoftonline.com/7xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxd5/v2.0',
clientId: '83xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxbb',
redirectUrl: 'msauth.com.application.redirect://auth/',
additionalParameters: { prompt: 'login' },
scopes: [
    'openid',
    'profile',
    'email',
    'offline_access',
    'api://8xxxxxxx-xxx-xxxxxxxxxb/application.read', // 自定义API受众范围
],
androidAllowCustomBrowsers: ['chrome'],

旧JWT令牌解码内容

"aud": "api://8xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxbb",
"scp": "application.read",

新登录配置(添加Graph权限后)

issuer: 'https://login.microsoftonline.com/7xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxd5/v2.0',
clientId: '83xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxbb',
redirectUrl: 'msauth.com.application.redirect://auth/',
additionalParameters: { prompt: 'login' },
scopes: [
    'openid',
    'profile',
    'email',
    'offline_access',
    'Sites.ReadWrite.All', // 添加的Graph权限
    'api://8xxxxxxx-xxx-xxxxxxxxxb/application.read', // 自定义API受众范围
],
androidAllowCustomBrowsers: ['chrome'],

新JWT令牌解码内容

"aud": "0000xxxxx-xxxx-xxxx-xxxx-xxxxxxx00000", // 变为Microsoft Graph的受众ID
"scp": "email openid profile SharePointTenantSettings.Read.All Sites.Read.All Sites.ReadWrite.All User.Read",

解决方法

问题核心原因:当同一个登录请求混合自定义API权限和Microsoft Graph权限时,Azure AD会自动将令牌受众切换为Microsoft Graph(全局API优先级高于自定义API)。要同时满足两个需求,需分两次获取令牌:

  1. 获取自定义API专用令牌:保持原有登录范围不变,只请求自定义API和OIDC基础权限(openid、profile等),得到的令牌aud仍为你的自定义API,scp保留application.read。

  2. 单独获取Graph专用令牌:利用首次登录拿到的offline_access刷新令牌,单独向Azure AD令牌端点发起请求,指定scope为https://graph.microsoft.com/Sites.ReadWrite.All offline_access(需带上Graph的完整前缀),此时得到的令牌受众为Microsoft Graph,权限包含所需的Graph接口权限。

关键注意事项

  • 两个令牌独立使用:自定义API令牌用于访问你的后端服务,Graph令牌仅用于调用Microsoft Graph接口。
  • 确保Azure AD应用注册中,已同时配置自定义API权限和Microsoft Graph权限(委派权限需完成管理员同意步骤)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:47:20