首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用clientCredential流从Graph请求自定义范围

无法使用clientCredential流从Graph请求自定义范围
EN

Stack Overflow用户
提问于 2021-09-15 12:26:20
回答 1查看 1.4K关注 0票数 1

我试图从图中请求具有以下范围的AppRoleAssignment.ReadWrite.All的访问权限。我已经授予了API所需的作用域--所以这不应该是个问题。

代码语言:javascript
复制
const ccrRequest = {
    scopes: ["https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All"],
}
const accessToken = await cca.acquireTokenByClientCredential(ccrRequest)

cca是一个ConfidentialClientApplication,我已经三次检查我的配置是否正确.

当我试图获取我的范围时,我会得到以下错误:

1002012 - 2021-09-15 12:15:42Z: AADSTS1002012: scope https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All openid配置文件offline_access提供的值无效。客户端凭据流必须具有一个作用域值,其/.default后缀为资源标识符(应用程序ID URI).\r\n‘

显然,这个错误告诉我要使用./default作用域(我真的不知道为什么)。但是根据文档,./default作用域应该为我提供所有的应用程序范围。然而,这种情况并没有发生:

代码语言:javascript
复制
0:'https://graph.microsoft.com/.default'
1:'openid'
2:'profile'
3:'offline_access'

上面是当我请求https://graph.microsoft.com/.default作用域时随我的访问权限提供的范围。当然,这并不代表我在门户中授予API的权限。

因此,当我执行我的fetch()请求时,会得到以下错误:

权限不足,无法完成操作。

关于ClientCredentials流,我在这里缺少了一些基本的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-15 12:29:45

您需要转到应用程序注册的API权限选项卡,添加在Microsoft上所需的应用程序权限(而不是委托权限),然后作为应用程序管理员运行管理许可。然后,您应该能够使用/.default范围并在访问令牌的角色声明中获得所需的权限。

在客户端凭据场景中,Openid、profile和offline_access作用域没有意义。没有用户,所以openid和profile作用域什么也不做。不需要offline_access作用域,因为您不需要刷新令牌。您拥有凭据,并且可以在需要新令牌时使用它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69193119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档