首页 > 解决方案 > 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/groupshttps://graph.microsoft.com/v1.0/groups/{id}我旨在获取组的显示名称或显示名称登录用户的 groupid。我的问题:是否有可能通过带有授权流(WebApplicationClient)的图形 api 或仅通过 BackendApplicationClient(客户端凭据流)获取登录用户的组。如果是,我该如何解决我的范围问题?

标签: pythonmicrosoft-graph-apiaccess-tokenscopes

解决方案


403 错误表示令牌不必更正权限。

对于授权代码流,您需要询问https://graph.Microsoft.com/Group.Read.All范围。

我总是使用jwt.ms,它允许我检查令牌并查看哪些声明可用。


推荐阅读