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

Azure App Service Easy Auth获取Microsoft Graph AccessToken失败排查

排查Azure App Service无法获取Microsoft Graph Access Token的问题

我来帮你捋一捋这个问题——这种情况我之前在项目里碰到过好几次,大概率是配置或者认证流程里的某个细节没到位,咱们一步步排查:

  • 先确认additionalLoginParams的配置是否正确
    首先要注意,这个参数的配置位置和格式很关键:

    • 在Azure Portal中,你需要进入App Service的「Authentication」→「Azure Active Directory」→「Edit」,在「Additional login parameters」里单独添加一行resource=https://graph.microsoft.com(注意不要带方括号,方括号只是示例中的数组格式,实际Portal里每行一个参数)。
    • 如果用Azure CLI配置,命令应该是:
      az webapp auth update --name <你的应用名> --resource-group <你的资源组> --additional-login-parameters "resource=https://graph.microsoft.com"
      

    另外,务必使用https://graph.microsoft.com(Microsoft Graph),不要用旧的https://graph.windows.net(Azure AD Graph,已被淘汰),否则获取的token无法用于新版Graph API。

  • 检查认证强制跳转设置
    如果你的App Service Authentication设置的是「Allow anonymous requests (no action)」,那么用户访问应用时可能不会触发完整的AAD认证流程,自然也不会获取到Graph的Access Token。请确保设置为「Log in with Azure Active Directory」,这样所有未认证的请求都会被重定向到AAD完成认证,触发完整的授权流程。

  • 确认AAD应用注册的权限配置
    你的App Service对应的AAD应用注册(就是Authentication里绑定的那个应用),必须添加Microsoft Graph的Delegated权限(比如User.Read、Mail.Read等),并且:

    • 如果是企业租户应用,需要管理员授予管理员同意;
    • 如果是个人应用,用户第一次登录时需要手动同意这些权限。
      没有配置对应权限的话,AAD不会返回Graph的Access Token,因为它不知道你的应用需要访问Graph资源。
  • 检查Token Store和认证响应类型
    在Azure Portal的Azure AD认证配置中,确保「Token store」是开启状态。另外,默认的认证请求可能只返回ID Token,你需要确保请求中包含response_type=code id_token token(至少包含token)——不过添加resource参数一般会触发AAD返回对应资源的Access Token,但如果响应类型里没有token,可能还是拿不到。

  • 排查/.auth/me的返回内容
    先确保你是在已登录的会话下访问/.auth/me(比如先访问应用主页触发登录),然后查看返回的JSON:

    • 正常情况下,应该会有access_tokens数组,里面包含针对https://graph.microsoft.com的token信息;
    • 如果没有,去Azure AD的「Sign-ins」日志里查看对应的登录记录,检查是否有返回Access Token的记录,或者有没有权限相关的错误。
  • 服务端获取Token的注意事项
    服务端用Request.Headers["x-ms-token-aad-access-token"]获取的token,默认可能是针对App Service自身的,而不是Graph的。如果遇到这种情况,你可以:

    • 使用App Service的/.auth/refresh端点,指定resource=https://graph.microsoft.com来获取专门的Graph Token;
    • 改用Azure Identity库(替代旧的Microsoft.Azure.Services.AppAuthentication),在服务端直接获取Graph Token,这种方式更可靠,也更符合微软的最新推荐。
  • 清除缓存重新登录
    有时候旧的会话缓存了未包含Graph资源的Token,你可以尝试清除浏览器缓存、注销当前登录后重新登录,触发新的认证流程,让AAD重新返回包含Graph资源的Token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:50:48