Azure App Service API应用登录后无JWT令牌及403刷新问题求助
解决Azure App Service认证会话后续请求无JWT的问题
我之前也碰到过类似的场景,结合你的描述,咱们可以从以下几个方向逐步排查:
1. 确认App Service的Token Store配置是否正确
Azure App Service的Authentication/Authorization模块依赖Token Store来保存用户的令牌信息,如果这个功能没开启,后续请求就无法从会话中获取令牌,导致/.auth/me返回空数组,/.auth/refresh也会失败。
- 登录Azure门户,找到你的App Service,进入Authentication面板
- 滚动到Token Store部分,确保启用令牌存储选项是勾选状态
- 同时检查会话配置:比如会话超时时间是否设置得过短,是否开启了滑动会话过期(这个选项会在用户活跃时自动延长会话有效期,避免频繁失效)
2. 验证Azure AD应用注册的权限与配置
你的Azure AD应用注册可能缺少维持会话和刷新令牌的必要配置:
- 进入Azure AD的应用注册,找到你的API应用对应的注册项
- 检查API权限:确保添加了
offline_access权限(这个权限允许应用获取刷新令牌,维持长期会话),并且已经完成管理员同意 - 确认身份验证里的重定向URI是否包含
https://<你的App Service域名>/.auth/login/aad/callback,这个是App Service与Azure AD交互的关键回调路径,配置错误会导致会话无法正常建立 - 检查令牌配置:在令牌配置里,确保启用了ID令牌和访问令牌(如果你的API需要访问令牌的话),并且设置了正确的受众(Audience)
3. 排查客户端请求的Cookie传递问题
App Service的认证会话是通过Cookie来维持的,后续请求如果没有正确带上认证Cookie,服务器就无法识别用户会话:
- 用浏览器开发者工具(F12)打开网络标签,重新发起请求,查看请求头里的
Cookie字段 - 确认是否包含类似
.AzureAuthCookie或者ARRAffinity的Cookie(不同配置下Cookie名称可能略有不同) - 如果Cookie缺失,检查是否是浏览器的隐私设置(比如阻止第三方Cookie)导致的,或者客户端请求是否手动禁用了Cookie传递
4. 检查/.auth/refresh的调用方式
/.auth/refresh端点的调用有严格要求,错误的调用方式会返回403:
- 必须使用POST请求,而不是GET
- 请求不需要携带任何参数,只要请求头里包含有效的认证Cookie即可
- 如果仍然返回403,大概率是会话已经彻底过期,或者Token Store未启用导致没有保存刷新令牌
5. 查看App Service的认证日志
如果以上步骤都没解决问题,开启App Service的诊断日志来定位具体错误:
- 进入App Service的监测 -> 日志流,开启实时日志
- 重新触发问题场景(比如登录后再次访问API),查看日志中是否有认证相关的错误信息,比如令牌验证失败、会话过期、权限不足等
- 也可以下载应用日志或Web服务器日志,里面会有更详细的错误堆栈信息
内容的提问来源于stack exchange,提问作者Souciance Eqdam Rashti
相关产品推荐
相关产品推荐

