基于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
相关产品推荐
相关产品推荐

