是否有适用于个人账号的Microsoft Graph API可撤销应用权限?
个人账号下撤销应用权限的最优方案
针对你遇到的个人账号场景,无需申请User.ReadWrite.All这类高权限,就能实现撤销令牌、终止应用权限的需求,具体方案如下:
1. 撤销已持有的令牌(核心操作)
使用微软身份平台的令牌撤销端点,仅需应用的客户端ID和用户的刷新令牌即可调用,无需额外高权限。这个操作会直接作废该刷新令牌,同时关联的所有访问令牌也会失效,应用将无法再获取用户账号的访问权限。
调用示例:
POST /oauth2/v2.0/revoke HTTP/1.1 Host: login.microsoftonline.com Content-Type: application/x-www-form-urlencoded client_id=你的应用客户端ID&token_type_hint=refresh_token&token=用户的刷新令牌
2. 关于应用从用户账号移除
对于个人Microsoft账户,应用无法通过API直接将自身从用户的已授权应用列表中移除,这一步需要用户在微软账户的「授权应用」设置中手动操作。但通过上述令牌撤销操作,应用已完全失去对用户账号的访问能力,已经满足用户停止使用应用的核心诉求。
3. 为什么你之前研究的接口不适用
DELETE /oAuth2PermissionGrants/{id}:该接口仅适用于Azure AD租户环境,不支持个人Microsoft账户。POST /me/invalidateAllRefreshTokens、POST /me/revokeSignInSessions:这两个接口需要用户授予User.ReadWrite.All等高权限,权限范围过大,仅为撤销令牌而申请完全没必要,会带来不必要的安全风险。
内容的提问来源于stack exchange,提问作者VukNovakovic
相关产品推荐
相关产品推荐

