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

Azure Identity调用getToken()报错:无法获取Microsoft Graph令牌

排查Kubernetes环境下Microsoft Graph令牌获取失败问题

核心排查步骤

虽然容器内curl能访问Graph API,但令牌获取失败涉及Azure AD身份验证的完整流程,以下是针对性排查方向:

1. 验证Azure AD令牌端点的网络可达性

Graph令牌获取实际调用的是Azure AD的认证端点(如https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token),而非Graph API本身。仅开放Graph路由不足以完成认证:

  • 进入容器执行 curl -v https://login.microsoftonline.com,确认能正常建立连接
  • 若无法访问,需申请开通login.microsoftonline.com及相关子域名的防火墙规则

2. 清理容器内的代理配置残留

即使新环境移除了代理,应用可能仍读取到系统级代理变量:

  • 在容器内执行 echo $HTTP_PROXY 和 echo $HTTPS_PROXY,检查是否有遗留的代理配置
  • 若存在,在Kubernetes Deployment的Pod模板中显式清空这些变量:
    env:
      - name: HTTP_PROXY
        value: ""
      - name: HTTPS_PROXY
        value: ""
      - name: NO_PROXY
        value: ""
    

3. 核对Azure AD应用与账号配置

  • 确认Kubernetes中配置的租户ID、客户端ID、用户名、密码等参数与本地完全一致(可通过打印应用日志或环境变量验证)
  • 检查Azure AD应用注册的权限:确保已添加Mail.Read等所需的委派权限,且完成了管理员同意(UsernamePasswordCredential仅支持委派权限,不支持应用权限)

4. 排查账号访问限制

  • 目标账号是否开启了MFA?UsernamePasswordCredential不支持带MFA的账号,若开启需切换为ClientCredential等其他认证方式
  • 账号是否被设置为仅允许特定位置登录?云端K8s的出口IP可能不在Azure AD条件访问策略的允许列表内,需放行对应IP段

5. 启用详细日志定位根因

在Spring Boot应用中开启Azure Identity的DEBUG日志,获取更具体的错误细节:

  • 在application.yml中添加日志配置:
    logging:
      level:
        com.azure.identity: DEBUG
    
    查看日志中是否有SSL证书验证失败、端点超时、权限不足等具体报错

6. 检查容器SSL证书完整性

  • 容器内的CA证书是否完整?若云端环境使用自定义CA,可能导致无法验证Azure AD的SSL证书
  • 执行 openssl s_client -connect login.microsoftonline.com:443,检查证书链是否正常返回

内容的提问来源于stack exchange,提问作者Vincent F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:29:59