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

Flask部署Azure Webapp报AADSTS50011 重定向URI返回HTTP而非HTTPS

问题根因

这个问题和GitHub Actions部署流程无关,也不需要给Flask本身配置SSL证书。
Azure Web App的HTTPS终止是在平台前置负载均衡层完成的,公网HTTPS流量到了负载均衡之后,会被转成HTTP请求转发到后端运行Flask的实例。Flask默认不会识别代理转发的特殊请求头,生成Azure AD认证回调地址的时候会错误使用http协议,自然和AAD应用注册里配置的HTTPS重定向URI不匹配,触发AADSTS50011错误。你之前尝试加的ssl_context='adhoc'参数在生产环境完全无效:一方面Azure不会把公网流量直接打到Flask监听的端口,另一方面生产环境默认用gunicorn这类WSGI服务器托管应用,根本不会执行你写的app.run()逻辑。

修复步骤
  • 配置Flask正确识别反向代理头
    用werkzeug自带的ProxyFix中间件修正请求头识别逻辑,代码加在Flask实例初始化之后、所有路由注册之前:
    from werkzeug.middleware.proxy_fix import ProxyFix
    
    app = Flask(__name__)
    # 新增下面这行
    app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1)
    
    配置完成后Flask会读取Azure负载均衡带过来的X-Forwarded-Proto头,生成所有站内链接、回调地址的时候会自动匹配外部访问的HTTPS协议。
  • 开启Azure Web App的HTTPS强制跳转
    进入Azure Web App门户的「配置-常规设置」页,打开「HTTPS Only」开关,平台会自动把所有HTTP请求跳转到HTTPS地址,避免非加密访问。Azure默认会转发所有X-Forwarded-*系列代理头,不需要额外做站点配置修改。
  • 清理无效配置
    把app.run()里添加的ssl_context='adhoc'参数删掉,这个配置只在本地直接运行Flask调试服务器的时候生效,放到生产环境没有任何作用,反而可能引发启动异常。
  • 校验AAD配置
    确认AAD应用注册里配置的重定向URI格式为https://<你的站点域名>/getAToken,路径、域名、协议完全和代码里配置的回调地址一致,不要带多余后缀或斜杠。
补充说明

本地调试时localhost用HTTP能正常通过认证,是AAD对本地回环地址做了特殊放行,生产环境AAD会严格校验重定向URI的协议、域名、路径全匹配,只要Flask正确识别代理头,生成的回调地址就会和配置值匹配,不会再触发50011错误。不需要在GitHub Actions流程里加任何HTTPS相关配置,CI流程只负责代码构建和部署,HTTPS能力是Azure平台侧原生提供的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:57:20