python - Graph API "get groups" 代表签名用户导致 403 error with message":"Insufficient permissions to complete the operation
问题描述
用例:代表登录用户使用 Authorization_code 流调用https://graph.microsoft.com/v1.0/groups :
具有 OAuth2Session 范围:https ://graph.microsoft.com/.default
oauth_session = OAuth2Session(clientid=clientid, state=session['oauth_state'], client=client,scope="https://graph.microsoft.com/.default")
access_token的范围是:“User.Read”。我不知道如何操纵这个范围!
api 客户端具有所有必需的委派权限(GroupMember.Read.All、Group.Read.All、Directory.Read.All、Group.ReadWrite.All、Directory.ReadWrite.All、Directory.AccessAsUser.All),如下所述: https: //docs.microsoft.com/de-de/graph/api/group-get?view=graph-rest-1.0&tabs=http
我还尝试在 OAuth2Session 中设置范围“Group.Read.All”,但没有帮助。
oauth_session = OAuth2Session(clientid=clientid, state=session['oauth_state'], client=client,scope="https://graph.microsoft.com/Group.Read.All")
以下请求使用与上述用例相同的 oauth 配置正常工作: https ://graph.microsoft.com/v1.0/me (这里我获取登录的用户 ID), https://graph.microsoft .com/v1.0/users/{id}/getMemberGroups(这里我得到一个组列表,用户所属)
使用https://graph.microsoft.com/v1.0/groups或https://graph.microsoft.com/v1.0/groups/{id}我旨在获取组的显示名称或显示名称登录用户的 groupid。我的问题:是否有可能通过带有授权流(WebApplicationClient)的图形 api 或仅通过 BackendApplicationClient(客户端凭据流)获取登录用户的组。如果是,我该如何解决我的范围问题?
解决方案
403 错误表示令牌不必更正权限。
对于授权代码流,您需要询问https://graph.Microsoft.com/Group.Read.All
范围。
我总是使用jwt.ms,它允许我检查令牌并查看哪些声明可用。
推荐阅读
- c - “cd”命令在我的自定义 shell 中不起作用
- python - DecodeError:在 Google Colab 上解析消息时出错
- spring - 如何创建一个可嵌入的对象列表,该列表来自 OneToMany 中的自己的表,但基于 One 的 Id
- node.js - 使用 nodejs module.exports 访问 lambda 模块
- flutter - 很棒的对话框没有在颤振应用程序中关闭
- deep-learning - 我们可以将图像从图像 URL 直接加载到 Keras/TensorFlow 中的 CNN 模型而不将图像存储在本地目录中吗?
- java - 我无法创建 Eclipse Java 类
- php - laravel 雄辩的 where 方法
- sql - 对这些实体之间的关系进行建模的最有效方法是什么?
- json - 何时在 Swift 中使用动态编码/解码?