如何在Microsoft Graph中撤销DelegatedPermissionGrant.ReadWrite.All和Directory.ReadWrite.All权限?
如何在Microsoft Graph中撤销DelegatedPermissionGrant.ReadWrite.All和Directory.ReadWrite.All权限?
嘿,这个权限互相卡壳的情况我之前也碰到过,确实挺闹心的。别担心,我给你几个靠谱的办法,帮你把这两个权限都撤掉,恢复到原来的状态:
方法一:通过Azure Active Directory门户手动操作(最直观)
这是最适合普通用户的方式,不用敲命令就能搞定:
- 登录Azure门户,找到并进入Azure Active Directory服务
- 在左侧菜单里点企业应用程序,然后搜索并选中「Microsoft Graph Explorer」这个应用
- 进入应用详情页后,切换到权限选项卡
- 在「已授予的权限」区域,找到
DelegatedPermissionGrant.ReadWrite.All和Directory.ReadWrite.All这两个权限,按住Ctrl键同时选中它们 - 点击页面顶部的「撤销权限」按钮,确认操作后刷新页面,这两个权限就会被同时移除,完美避开互相依赖的问题
方法二:用PowerShell批量删除(适合喜欢命令行的用户)
如果习惯用脚本操作,这个方法效率更高:
- 先确保安装了AzureAD模块,没装的话打开PowerShell(管理员模式),运行:
Install-Module -Name AzureAD,按提示完成安装 - 连接到Azure AD:
Connect-AzureAD,然后用你的管理员账号完成登录 - 先查询出包含目标权限的授予记录:
$grants = Get-AzureADUserOAuth2PermissionGrant -All $true | Where-Object { $_.Scope -match "DelegatedPermissionGrant.ReadWrite.All|Directory.ReadWrite.All" }
- 接着批量删除这些记录:
foreach ($grant in $grants) { Remove-AzureADUserOAuth2PermissionGrant -ObjectId $grant.ObjectId }
- 运行完后再执行一遍查询命令,确认权限已经被清理干净
方法三:通过Microsoft Graph API操作(适合开发者)
如果有其他具备全局管理员权限的账号,或者能获取到应用权限令牌,可以用API来处理:
- 调用
GET /users/{你的用户ID}/oauth2PermissionGrants,获取当前账号的所有委托权限授予记录 - 在返回结果里找到包含那两个权限的条目,记录它们的
id字段 - 分别调用
DELETE /oauth2PermissionGrants/{记录ID},把这些权限授予逐个删除 - 注意:如果用当前账号的令牌,可能已经因为撤销了其中一个权限而无法执行删除操作,所以建议用另一个有权限的管理员账号来调用API
备注:内容来源于stack exchange,提问作者Joe




