Azure App Service认证后请求头缺失OAuth访问与刷新令牌问题
以下是针对你遇到的/.auth/me端点仅返回X-MS-TOKEN-AAD-ID-TOKEN、缺失其他令牌的排查和修复步骤:
检查Azure AD提供商的令牌设置
登录Azure门户,进入Web App的「Authentication」→「Azure Active Directory」配置面板,确保**同时勾选了「Access tokens」和「ID tokens」**选项。如果仅勾选ID tokens,App Service只会返回ID token,不会获取access/refresh token。确认范围与受众配置的准确性
在同一配置面板的「Scopes」字段中,确保准确填入offline_access和api://<API_ID>/user_impersonation,注意将<API_ID>替换为你的API应用注册的客户端ID(或标识符URI)。同时在「Allowed token audiences」中添加api://<API_ID>,确保令牌的受众匹配API的标识。验证API权限的授予状态
进入Azure AD的应用注册,找到你的Web App应用,切换到「API permissions」页面。确认已添加的api://<API_ID>/user_impersonation权限已完成管理员授权(点击「Grant admin consent for <你的租户名>」)。未授权的权限会导致无法获取对应的access token。检查API的范围暴露配置
打开API对应的应用注册,进入「Expose an API」页面,确认user_impersonation范围已创建且状态为「Enabled」,确保该范围的受众包含你的Web App应用(或允许租户内所有应用访问)。确认认证流程类型
确保Web App使用的是授权码流而非隐式流。在Azure AD提供商配置的「Response type」中选择「Code」,隐式流默认不会返回refresh token,且可能限制access token的获取。验证请求的认证上下文
访问/.auth/me时,确保处于已登录用户的会话中(比如浏览器已完成登录,请求携带App Service的ARRAffinity会话Cookie)。未认证的请求或无效会话不会返回完整的令牌集合。
内容的提问来源于stack exchange,提问作者James Palmer

