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

在AWS ALB上部署的Django应用集成Azure AD认证时重定向URI不匹配问题

在AWS ALB上部署的Django应用集成Azure AD认证时重定向URI不匹配问题

看起来你遇到的是AWS ALB终止HTTPS后,后端Django应用无法正确识别请求协议导致的重定向URI不匹配问题,我来帮你梳理下原因和解决办法:

问题根源

AWS ALB作为SSL终止点,会将外部的HTTPS请求转换成HTTP转发给你的Django应用。而Django默认会根据自身接收到的请求协议生成回调URI,所以它会输出http://myhost/oauth2/callback,这就和你在Azure里配置的HTTPS版本不匹配,触发了AADSTS50011错误。

具体解决步骤

  1. 配置Django信任ALB的转发头
    在你的Django settings.py 中添加以下配置,让Django从ALB传递的X-Forwarded-Proto头里获取真实的请求协议:

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    

    同时更新CSRF_TRUSTED_ORIGINS,确保它包含HTTPS前缀的域名:

    CSRF_TRUSTED_ORIGINS = ['https://myhost']
    

    这样Django就能正确识别出请求是通过HTTPS进来的,生成的回调URI也会是HTTPS版本。

  2. 确认ALB的转发头设置
    检查你的AWS ALB目标组,确保它在转发请求时保留了X-Forwarded-Proto、X-Forwarded-For这些默认头。AWS ALB默认会自动添加这些头,但如果有自定义的请求头规则,不要把它们移除。

  3. 验证回调URI生成
    可以临时开启DEBUG = True(注意生产环境用完要改回去),访问https://myhost/oauth2/login,查看跳转至Azure认证页面的URL中,redirect_uri参数是否已经变成https://myhost/oauth2/callback。如果已经正确显示,说明配置生效了。

  4. 额外检查项

    • 再次确认Azure应用注册中的重定向URI是https://myhost/oauth2/callback,没有拼写错误(比如多/少斜杠、域名错误)。
    • 确保你的ALLOWED_HOSTS配置正确,已经包含myhost。

总结

核心就是让Django通过ALB传递的转发头识别真实的请求协议,这样生成的回调URI就能和Azure里配置的保持一致,解决不匹配的问题。

备注:内容来源于stack exchange,提问作者roshan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:28:02