我因不同的权限 Device.ReadWrite.All 遇到此错误。我正在尝试使用授权代码授予工作流程获取访问 token ,但出现此错误。如果我使用客户端凭据授予工作流程,我就能够接收 token 。
错误是应用程序 xxx 要求范围 Device.ReadWrite.All 在资源 xxx 上不存在。联系供应商
- 谁能解释一下为什么会发生这种情况
- Device.ReadWrite.All 是应用程序权限,因此我只能使用客户端凭据授予工作流程获取 token 吗?
最佳答案
Can anyone please explain why this happens
正如您所说,Device.ReadWrite.All
是应用程序权限而不是委托(delegate)权限。
当您使用麻醉代码流
时,客户端应用程序将被授予代表特定用户访问资源的权限。通常在consent期间,权限从用户委托(delegate)给应用程序。流程。
但是,在客户端凭据
流程中,权限直接授予应用程序本身。当应用程序向资源提供 token 时,资源会强制应用程序本身(而不是用户)有权执行操作。
因此,当您使用身份验证代码
流程(用户交互)获取代码时,会收到错误消息,您需要使用服务到服务流程来获取访问 token 。
Device.ReadWrite.All
is application permission so can I only get token using client credentials grant workflow?
是的,只能使用客户端凭据来获取应用程序权限。
关于azure - 应用程序 xxx 请求资源 xxx 上不存在的范围 Device.ReadWrite.All。联系供应商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60879837/