如何通过微软身份平台或Graph API查询个人微软账号访问令牌的scope
微软个人/商业账号访问令牌scope校验解决方案
方案1:使用OAuth 2.0令牌自省端点(等价于谷歌TokenInfo接口)
- 微软身份平台提供标准的OAuth 2.0令牌自省接口,支持校验所有类型(个人账号/商业Azure AD账号)的访问令牌,无需解码令牌本身
- 调用方式为POST请求自省端点,请求参数需携带
client_id、client_secret、待校验的token - 响应结果中会返回
active(令牌是否有效)、scope(令牌实际生效的权限列表)、exp(过期时间)等核心字段,可直接用于审计校验
方案2:在OpenIdConnect中间件层面捕获令牌下发时的scope
- 你使用的
AspNetCore.Authentication.OpenIdConnect中间件支持自定义令牌响应处理事件,可订阅OnTokenResponseReceived事件 - 该事件会在授权码流成功兑换到访问令牌、刷新令牌后触发,可直接从上下文的
TokenResponse属性中获取到本次下发令牌对应的实际scope值 - 你可以将该
scope值与访问令牌、用户标识绑定存储,后续审计时可直接读取本地存储的记录,无需额外调用接口
注意:该方案获取的是令牌下发时刻的scope,若需校验令牌当前的实时有效性、权限变更状态,需使用方案1的自省端点
补充说明
- 个人微软账号的访问令牌为微软私有格式,官方不支持自行解码解析,请勿尝试逆向解析操作
- 两种方案均支持个人账号、商业Azure AD账号的全场景覆盖
内容的提问来源于stack exchange,提问作者thankyoussd
相关产品推荐
相关产品推荐

