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

Flask经gunicorn+nginx部署后向Azure AD发HTTP地址报AADSTS50011错误如何解决?

问题根因

你的场景属于Nginx反向代理HTTPS请求后,后端Flask应用未正确识别原始请求的协议:Nginx对外提供HTTPS服务,但和后端Gunicorn/Flask应用之间走的是HTTP协议,Flask默认根据当前收到的请求协议生成回调地址,最终传给Azure AD的重定向URI就变成了HTTP格式,和你在Azure注册的HTTPS回调地址不匹配,触发AADSTS50011错误。

修复步骤

1. 修正Nginx反向代理配置

在Nginx的location /配置块中新增X-Forwarded-Proto请求头,将原始请求的协议传递给后端应用,修改后配置如下:

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header HOST $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 新增以下行传递原始请求协议
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://127.0.0.1:8000;
    proxy_redirect off;
}

修改后执行nginx -s reload生效配置。

2. 配置Flask信任代理头

需要给Flask添加配置,允许应用读取代理传递的X-Forwarded-*头识别原始请求信息,在你的应用启动代码(如app.py)中添加以下配置:

from flask import Flask
from werkzeug.middleware.proxy_fix import ProxyFix

app = Flask(__name__)
# 新增ProxyFix中间件处理代理头
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)
# 强制URL生成使用HTTPS协议
app.config['PREFERRED_URL_SCHEME'] = 'https'

如果你的应用使用示例项目的默认配置,也可以直接在app_config.py中追加上述配置项。

可选:直接手动指定重定向地址

如果不想修改代理和应用配置,可以直接在调用MSAL认证流程的代码中手动写死完整的HTTPS回调地址,避免自动生成协议错误:
找到项目中调用initiate_auth_flow的位置,显式传入redirect_uri参数:

result = msal_app.initiate_auth_flow(
    scopes=SCOPE,
    redirect_uri="https://myserver.mycompany.com/getAToken",
    # 其余原有参数保持不变
)

额外注意项

你贴出的systemd服务配置文件中,Environment行末尾缺少闭合引号,修正后如下:

Environment="PATH=/home/myuser/ms-identity-python-webapp-master/msflaskenv/bin"

修改后执行systemctl daemon-reload再重启服务生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:36:05