Graph API:如何以编程方式撤销委派权限(含特定权限)
关于委派权限撤销的问题解答
你之前尝试通过以下Graph API操作撤销权限:
获取权限授予ID:
GET https://graph.microsoft.com/v1.0/me/oauth2PermissionGrants Authorization: Bearer <token>删除权限授予:
DELETE https://graph.microsoft.com/v1.0/oauth2PermissionGrants/{id} Authorization: Bearer <token>
但收到的报错提示需要管理员权限,这是因为oauth2PermissionGrants是租户级别的权限管理资源,普通用户的令牌无权执行删除或修改操作。针对你的问题,具体解答如下:
1. 如何以编程方式撤销用户授予的委派权限?
在仅拥有用户委派权限的情况下,应用无法直接通过Graph API删除权限授予,可行的编程触发方式有两种:
- 引导用户手动撤销:在应用内提供跳转入口,指向Microsoft账户的权限管理页面,让用户自行操作撤销对应用的权限。
- 发起重新授权请求:通过OAuth2授权流程,在授权URL中添加
prompt=consent参数,引导用户重新授权。此时用户可以选择取消之前授予的部分或全部权限,完成后应用将获得更新后的权限集合。
2. 是否可以仅撤销特定权限?
是的,但需要用户参与操作:
- 用户可以在Microsoft账户的权限管理页面中,单独取消某一项权限(比如仅撤销
Calendar.Read而保留Chat.Read)。 - 或者通过重新授权流程,让用户在授权界面取消特定权限的勾选,完成后应用的权限集合将仅保留用户重新授予的部分。
应用无法直接修改已有的权限授予来单独移除某一项权限,因为这类操作同样需要管理员级别的令牌权限。
内容的提问来源于stack exchange,提问作者Devesh Tiwari
相关产品推荐
相关产品推荐

