我试图从图中请求具有以下范围的AppRoleAssignment.ReadWrite.All的访问权限。我已经授予了API所需的作用域--所以这不应该是个问题。
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作用域应该为我提供所有的应用程序范围。然而,这种情况并没有发生:
0:'https://graph.microsoft.com/.default'
1:'openid'
2:'profile'
3:'offline_access'上面是当我请求https://graph.microsoft.com/.default作用域时随我的访问权限提供的范围。当然,这并不代表我在门户中授予API的权限。
因此,当我执行我的fetch()请求时,会得到以下错误:
权限不足,无法完成操作。
关于ClientCredentials流,我在这里缺少了一些基本的东西吗?
发布于 2021-09-15 12:29:45
您需要转到应用程序注册的API权限选项卡,添加在Microsoft上所需的应用程序权限(而不是委托权限),然后作为应用程序管理员运行管理许可。然后,您应该能够使用/.default范围并在访问令牌的角色声明中获得所需的权限。
在客户端凭据场景中,Openid、profile和offline_access作用域没有意义。没有用户,所以openid和profile作用域什么也不做。不需要offline_access作用域,因为您不需要刷新令牌。您拥有凭据,并且可以在需要新令牌时使用它们。
https://stackoverflow.com/questions/69193119
复制相似问题