You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Azure AD认证后调用Graph API的令牌使用方式是否正确

关于Azure AD令牌复用的专业建议

咱们直接说结论:你当前的实现方法不是最优解,更推荐直接使用从AuthenticationResult获取的同一令牌来调用Azure AD Graph API,下面给你详细拆解原因和正确做法:

为什么不推荐重新生成令牌?

  • 冗余操作,影响性能:每次重新请求新令牌都要和Azure AD做一次完整的认证交互,这会增加额外的网络开销,拉长请求链路的响应时间。在高并发场景下,这种重复操作还可能触发Azure AD的限流机制,导致请求失败。
  • 不符合OAuth2.0规范:OAuth2.0的核心设计之一就是令牌复用,只要令牌在有效期内、权限和受众匹配,就应该直接使用,避免重复认证。

正确的实现方式

  1. 先验证现有令牌的可用性
    拿到AuthenticationResult后,检查两个关键信息:
    • 令牌的受众(aud声明):是否为Azure AD Graph API的官方标识符(通常是https://graph.windows.net)
    • 令牌的权限(scp或roles声明):是否包含你要执行的Graph API操作所需的权限(比如Directory.Read.All、User.ReadWrite.All等)
  2. 直接复用令牌调用API
    把AuthenticationResult.AccessToken放到请求头的Authorization字段中,格式为:
    Authorization: Bearer {你的AccessToken}
    
    直接发送请求到Azure AD Graph API即可。
  3. 优雅处理令牌过期
    通过AuthenticationResult.ExpiresOn字段判断令牌是否即将过期,当剩余有效期不足时,再调用Azure AD的刷新令牌接口获取新令牌,而不是每次请求都重新生成。

额外提醒

  • 如果现有令牌没有包含Graph API的权限,问题出在初始认证请求的scope参数上。你需要在发起Azure AD认证时,就把Azure AD Graph API所需的权限scopes加入请求(比如https://graph.windows.net/Directory.Read.All),这样返回的令牌就会自带对应权限,直接就能用。
  • 微软目前更推荐使用Microsoft Graph API替代Azure AD Graph API(后者已进入维护模式),如果是新项目,建议迁移到Microsoft Graph,令牌复用的逻辑完全一致。

内容的提问来源于stack exchange,提问作者Java Team

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:56:14