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

Azure Static Web App子路径部署下Azure AD认证重定向循环问题

Azure Static Web App子路径部署下Azure AD认证重定向循环问题解决

问题原因分析

  1. 重定向URL未携带子路径前缀
    你的responseOverrides中配置的401重定向目标是/.auth/login/aad,这是根路径下的认证端点。当用户在/help子路径触发未授权时,浏览器跳转到根路径的认证入口,若该请求未正确路由到SWA,或认证完成后重定向未回到/help子路径,会再次触发根路径的权限检查(你的路由规则要求/*需authenticated),进而再次跳转登录,形成循环。

  2. 认证会话上下文不匹配
    SWA内置认证模块默认基于域名根路径生成会话Cookie和认证上下文。部署在子路径时,认证成功后生成的Cookie路径为根路径,而应用运行在/help下,导致SWA无法识别已认证状态,重复触发登录流程。

  3. 回调后重定向路径丢失子路径
    即便Azure AD回调URL配置正确(https://{app-domain}/help/.auth/login/aad/callback),SWA处理回调时可能未保留子路径上下文,认证完成后直接重定向到根路径,触发根路径权限检查,再次进入登录流程。

调试/追踪方法

  • SWA诊断日志:在Azure门户SWA资源的「监控」->「日志」中,查询StaticWebAppLogs,可查看认证请求的状态、重定向逻辑、权限检查结果等细节。
  • 浏览器开发者工具:开启「网络」面板,追踪认证流程中的所有请求,查看Location头、Cookie参数、redirect_uri和state参数,确认重定向目标和回调URL是否包含子路径。
  • 本地SWA CLI调试:使用swa start --verbose启动本地实例,搭配反向代理工具模拟子路径路由,查看详细的认证流程日志。
  • Azure AD登录日志:在Azure AD门户「企业应用」->目标应用->「登录日志」中,检查认证请求的状态和错误信息,确认回调是否成功完成。

子路径部署的特定配置调整

1. 修正401重定向URL

更新responseOverrides中的重定向路径,添加/help前缀:

"responseOverrides": {
  "401": {
    "statusCode": 302,
    "redirect": "/help/.auth/login/aad"
  }
}

2. 调整路由规则优先级

添加优先匹配的路由规则,允许匿名访问认证相关路径,避免被全局权限规则拦截:

"routes": [
  {
    "route": "/help/.auth/*",
    "allowedRoles": ["anonymous"]
  },
  {
    "route": "/help/*",
    "rewrite": "/*"
  },
  {
    "route": "/*",
    "allowedRoles": ["authenticated"]
  }
]

3. 配置前端basePath(若适用)

如果前端应用基于子路径构建,需在前端配置中设置basePath为/help,同时在SWA配置中添加:

"basePath": "/help"

4. 确认Azure AD回调URL

确保应用注册的重定向URI包含子路径:https://{app-domain}/help/.auth/login/aad/callback,并已添加到列表中。

5. 优化APIM/Front Door路由策略

确保/help/.auth/*的请求完整路由到SWA,调整Location头修改策略,仅对非认证路径添加/help前缀,避免干扰认证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:05:16