请求含User.Read与msads.manage范围的AccessToken时遇Scope不兼容错误
解决AADSTS70011:范围互不兼容错误
问题重现
尝试获取包含User.Read和https://ads.microsoft.com/msads.manage范围的Access Token时,返回以下错误:
{ "error": "invalid_scope", "error_description": "AADSTS70011: 输入参数'scope'提供的值无效。'User.Read https://ads.microsoft.com/msads.manage'中的一个或多个范围互不兼容。\r\n跟踪ID: 39f45ba8-5264-4a49-8620-992312ec6f00\r\n关联ID: aa6c6629-0503-44ef-9fd6-0ffeabdf8dd3\r\n时间戳: 2023-05-15 09:23:49Z", "error_codes": [ 70011 ], "timestamp": "2023-05-15 09:23:49Z", "trace_id": "39f45ba8-5264-4a49-8620-992312ec6f00", "correlation_id": "aa6c6629-0503-44ef-9fd6-0ffeabdf8dd3" }
原因分析
User.Read是Microsoft Graph的API范围,而https://ads.microsoft.com/msads.manage是Microsoft Advertising的API范围,两者属于不同的Azure AD资源(受众)。Azure AD的Access Token请求规则要求:一个令牌请求只能针对单一资源,不能同时混合不同资源的范围,否则会触发invalid_scope错误。
解决方案
需要分开请求两个独立的Access Token,分别对应不同的资源:
- 针对Microsoft Graph资源,请求范围为
User.Read的令牌,资源标识符为https://graph.microsoft.com/ - 针对Microsoft Advertising资源,请求范围为
https://ads.microsoft.com/msads.manage的令牌,资源标识符为https://ads.microsoft.com/
调用对应API时,使用匹配的令牌:调用Microsoft Graph接口用第一个令牌,调用Microsoft Advertising接口用第二个令牌。
内容的提问来源于stack exchange,提问作者hamza shah
相关产品推荐
相关产品推荐

