我正在我的网站上实施SAML支持。我在我的Django应用程序中使用OneLogin's Python SAML Toolkit来执行此操作。当使用我的本地计算机http://127.0.0.1:8000(完全本地)或http://192.168.x.x:800(本地网络)时,一切都可以正常连接OneLogin测试应用程序和Azure应用程序。一旦我在我的登台服务器上尝试此操作,这会强制所有URL都为https,就会失败。 IE11在身份提供者的响应中根本没有POST任何数据,这很奇怪,通常我从工具包中得到错误,如下所示:
The response was received at https://dev.mysite.com:80/saml/connect/ instead of https://dev.mysite.com/saml/connect/
因此,虽然事情应该正确配置,但IdP最终会尝试在端口80上回到我的登台服务器,这会让事情变得混乱。如果我从头开始设置端口80,Chrome会因为它不信任https://...:80而感到安全。我找不到任何引用此问题的文档或SO问题;我所看到的就是the OneLogin Python setup instructions中的这个注释:
Important: Ensure that your URLs begin with http, not https.
但是为什么没有解释。我很困惑。
答案 0 :(得分:0)
python-saml支持https或http。
您只需要正确设置请求的值,使用prepare_django_request方法检查此演示 (https://github.com/onelogin/python-saml/blob/master/demo-django/demo/views.py#L18)