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

基于Flask的Dash应用Azure AD认证HTTPS重定向URI错误排查

Flask-Dash + Flask-Dance Azure AD 认证:IIS部署下重定向URI HTTP转HTTPS问题解决

在IIS通过wfastcgi部署Flask-Dash应用时,集成Flask-Dance实现Azure AD认证出现重定向URI为HTTP、与Azure配置的HTTPS URI不匹配的问题,可通过以下思路解决:

1. 确保IIS正确传递HTTPS头信息

IIS作为反向代理需要将HTTPS相关头传递给后端应用,可在站点的web.config中添加URL重写规则:

<system.webServer>
  <rewrite>
    <!-- 强制所有请求跳转至HTTPS -->
    <rules>
      <rule name="Force HTTPS" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="off" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
      </rule>
    </rules>
    <!-- 向响应中添加X-Forwarded-Proto头,告知后端当前协议为HTTPS -->
    <outboundRules>
      <rule name="Add X-Forwarded-Proto">
        <match serverVariable="RESPONSE_X-Forwarded-Proto" pattern=".*" />
        <action type="Rewrite" value="https" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

同时确认IIS应用池启用了匹配wfastcgi架构的选项(如32位应用程序),权限配置正确。

2. 手动指定Flask-Dance重定向URI

跳过自动生成逻辑,直接在make_azure_blueprint中指定完整的HTTPS重定向URI:

blueprint = make_azure_blueprint(
    client_id="my client id",
    client_secret="my client secret",
    tenant="my tenant id",
    scope=["openid", "email", "profile"],
    login_url="/login",
    authorized_url="/auth",
    prompt="none",
    redirect_uri="https://example.com/login/auth"  # 替换为你的HTTPS重定向地址
)

3. 调整ProxyFix加载顺序

将ProxyFix的设置移至Flask实例初始化后、蓝图注册和Dash初始化前,确保所有请求经过头信息修正:

server = Flask(__name__)
server.config["SECRET_KEY"] = "secret key"

# 先设置ProxyFix,再处理后续初始化
server.wsgi_app = ProxyFix(server.wsgi_app, x_proto=1, x_host=1, x_for=1)

server.register_blueprint(blueprint, url_prefix="/login")
app = Dash(__name__, server=server)

4. 在web.config中配置Flask环境变量

通过web.config的appSettings强制指定HTTPS相关配置:

<appSettings>
  <add key="PYTHONPATH" value="D:\path\to\your\application" />
  <add key="WSGI_HANDLER" value="app.server" />
  <add key="FLASK_ENV" value="production" />
  <add key="PREFERRED_URL_SCHEME" value="https" />
  <add key="OAUTHLIB_INSECURE_TRANSPORT" value="0" />
</appSettings>

5. 验证Azure AD应用注册配置

确认Azure AD应用注册中已添加https://example.com/login/auth作为Web类型的重定向URI,且未保留多余的HTTP类型URI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:43:32