Azure SAML与强制SSL

Azure SAML与强制SSL,azure,ssl,https,saml,onelogin,Azure,Ssl,Https,Saml,Onelogin,我正在我的站点上实现SAML支持。我正在我的Django应用程序中使用它来实现这一点。当使用我的本地计算机(完全本地)或(本地网络)连接到OneLogin测试应用程序和Azure应用程序时,一切正常。只要我在我的登台服务器上尝试这个,强制所有URL都使用https,事情就会失败。IE11根本无法在身份提供者的响应中发布任何数据,这很奇怪,通常我会从工具箱中得到如下错误: The response was received at https://dev.mysite.com:80/saml/con

我正在我的站点上实现SAML支持。我正在我的Django应用程序中使用它来实现这一点。当使用我的本地计算机(完全本地)或(本地网络)连接到OneLogin测试应用程序和Azure应用程序时,一切正常。只要我在我的登台服务器上尝试这个,强制所有URL都使用https,事情就会失败。IE11根本无法在身份提供者的响应中发布任何数据,这很奇怪,通常我会从工具箱中得到如下错误:

The response was received at https://dev.mysite.com:80/saml/connect/ instead of https://dev.mysite.com/saml/connect/
因此,虽然应该正确配置,但IdP最终还是试图在端口80上发回我的暂存服务器,这让事情变得混乱。如果我从一开始就将其设置为使用端口80,Chrome会崩溃,因为它不安全。我找不到任何涉及此问题的文档或问题;我所看到的就是这张便条:


但是没有解释为什么。我完全糊涂了。

python saml支持https或http

您只需正确设置请求的值,使用prepare\u django\u请求方法检查此演示
()

python saml支持https或http

您只需正确设置请求的值,使用prepare\u django\u请求方法检查此演示
()

我正在正确设置这些值;这不是问题所在。似乎IdP总是使用http发回,我的开发服务器强制升级到https,这会把事情搞砸。我会尽快提供更多细节。好的,我承认仔细阅读该演示解决了我们的问题:
#如果服务器在代理或平衡器后面,则使用HTTP_X_转发字段
基本上我们需要使用
request.META['HTTP_X_转发端口']
,因为我们在ELB后面。(Django 1.9中的
get_port()
对此很有用。)这就是端口80的来源,让人困惑。我正在正确设置这些值;这不是问题所在。似乎IdP总是使用http发回,我的开发服务器强制升级到https,这会把事情搞砸。我会尽快提供更多细节。好的,我承认仔细阅读该演示解决了我们的问题:
#如果服务器在代理或平衡器后面,则使用HTTP_X_转发字段
基本上我们需要使用
request.META['HTTP_X_转发端口']
,因为我们在ELB后面。(Django 1.9中的get_port()对此很有用。)这就是80端口的来源,让人困惑。
Important: Ensure that your URLs begin with http, not https.