如何在Microsoft Identity平台编程撤销OAuth2访问权限
Microsoft Identity 平台 OAuth2 授权撤销实现方案
Microsoft Identity 平台提供与 Google OAuth2 撤销端点能力完全对等的官方能力,可同时满足撤销存量令牌、移除应用授权记录的两个核心要求,无需用户手动到门户操作。
能力匹配说明
调用对应接口后可实现和 Google 撤销接口完全一致的效果:
- 当前用户下已签发的所有未过期 Access Token、Refresh Token 会立即进入失效流程,无法再用于调用 Graph API 访问邮件、日历、联系人等用户数据
- 应用会自动从微软账户门户「隐私 -> 可访问你的数据的应用和服务」列表中移除,用户可直接在门户确认授权已被彻底清除,无残留授权记录
具体接入方式
核心使用 Graph API 提供的撤销会话接口实现全量授权清除,接入要求和调用规则如下:
- 权限配置
提前在 Azure 应用注册后台给应用配置对应权限:委托场景下需要User.RevokeSessions.All委托权限,服务端后台静默调用场景需要同名称的应用权限。 - 调用规则
- 请求方法:
POST - 接口路径:用户自主操作场景使用
/me/revokeSignInSessions,管理员操作指定用户场景使用/users/{用户的Object ID}/revokeSignInSessions - 请求头:携带标准 OAuth2 认证头
Authorization: Bearer {当前持有的有效访问令牌} - 请求体:无需传入任何额外参数
- 成功判定:接口返回
204 No Content状态码即代表操作提交成功
- 请求方法:
- 注意事项
- 受平台令牌缓存机制影响,令牌完全失效最长有15分钟的延迟,延迟窗口期内少量已缓存在网关的令牌可能仍能调用接口,15分钟后所有旧令牌会被100%拦截
- 该接口同时支持Azure AD工作/学校账户、个人微软账户(MSA,即普通用户使用的outlook、hotmail等个人账户),覆盖所有面向普通消费者的应用授权场景
- 建议将该接口调用逻辑放在后端服务侧实现,不要在前端直接暴露调用逻辑,避免令牌泄露被恶意触发授权撤销
如果仅需要让现有令牌失效、保留用户和应用的授权关系(比如强制用户重新登录验证身份),不需要调用上述接口,直接跳转平台的登出端点即可,不会清除用户的授权记录。
内容的提问来源于stack exchange,提问作者mohamed Arshad
相关产品推荐
相关产品推荐

