Microsoft Entra多租户API:能否自行撤销O365租户授权权限?
Microsoft Entra多租户API权限撤销方案
核心结论
你完全可以自行撤销客户O365租户中授予你的应用的权限,不需要客户手动操作,刚好能帮客户减少管理负担。
具体操作方法
你当前使用的是client_credentials模式获取应用级权限,对应撤销操作可通过Microsoft Graph API完成:
- 先确认你的应用在客户租户中已获得
Application.ReadWrite.OwnedBy或Directory.AccessAsUser.All权限(需提前在应用注册中配置,并通过OAuth流程获得客户授权)。 - 查询目标权限的分配ID:
从返回结果中提取对应权限的GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq 'MY_CLIENT_ID'&$expand=appRoleAssignmentsappRoleAssignmentId。 - 执行删除请求完成权限撤销:
DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{你的应用服务主体ID}/appRoleAssignments/{appRoleAssignmentId}
如果是OAuth重定向流程中用户授予的委派权限,撤销方式如下:
- 查询权限授予ID:
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$filter=clientId eq 'MY_CLIENT_ID' - 执行删除请求:
DELETE https://graph.microsoft.com/v1.0/oauth2PermissionGrants/{permissionGrantId}
关键注意点
- 权限撤销后,后续无法再获取对应权限的新令牌,但已发出的未过期access_token仍会保持有效(这和你了解的一致,无法主动撤销未过期的access_token)。
- 必须确保你的应用拥有足够权限执行删除操作,否则会返回权限不足的错误。
内容的提问来源于stack exchange,提问作者Qd1y
相关产品推荐
相关产品推荐

