Azure App Service部署Django应用微软登录HTTPS重定向异常
Django + ms_identity_web在Azure App Service的HTTPS重定向不匹配修复方案
问题根源
Azure App Service的负载均衡器会在前端完成HTTPS终止,后端Django应用接收到的实际请求是HTTP协议的。ms_identity_web依赖请求的协议生成重定向URL,因此会错误生成HTTP地址,和应用注册中配置的HTTPS重定向URL冲突。
修复步骤
1. 让Django识别代理传递的真实协议
在settings.py中添加以下配置,告诉Django信任负载均衡器发送的X-Forwarded-Proto头部,以此判断真实请求协议:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') USE_X_FORWARDED_HOST = True USE_X_FORWARDED_PORT = True
2. 强制全站HTTPS跳转
在settings.py中开启全局HTTPS强制,确保所有生成的URL都使用HTTPS:
SECURE_SSL_REDIRECT = True
3. 修正ms_identity_web的重定向URI配置
检查你的aad.config.json(或类似配置文件),将redirect_uri改为相对路径(比如/auth/redirect),不要硬编码HTTP前缀。这样ms_identity_web会基于Django识别到的当前协议自动拼接完整的HTTPS重定向地址。
4. 确认Azure App Service的HTTPS设置
登录Azure Portal,进入你的App Service,在「配置」→「常规设置」中开启HTTPS Only选项,确保外部请求只能通过HTTPS访问应用。
验证
部署修改后的代码后,触发登录流程,查看微软登录页面的回调地址是否已变为HTTPS格式,同时确认该地址与Azure应用注册中配置的重定向URL完全一致。
内容的提问来源于stack exchange,提问作者J.W
相关产品推荐
相关产品推荐

