Python 反向代理后面的非标准端口上的SAML2服务提供程序
我有一个SAML2服务提供者(如果有区别的话),根据配置,否则工作正常。它在测试身份提供商和其他第三方提供商处运行,并与之配合良好 当引入nginx反向代理时,问题就开始了。设置如下所示:Python 反向代理后面的非标准端口上的SAML2服务提供程序,python,nginx,reverse-proxy,saml-2.0,python-social-auth,Python,Nginx,Reverse Proxy,Saml 2.0,Python Social Auth,我有一个SAML2服务提供者(如果有区别的话),根据配置,否则工作正常。它在测试身份提供商和其他第三方提供商处运行,并与之配合良好 当引入nginx反向代理时,问题就开始了。设置如下所示: nginx显然在端口80上运行 LMS(服务提供商)在端口8000上运行 lms.local通过hosts文件别名为localhost Nginx具有以下站点配置: server { listen 80; server_name lms.local; location / {
lms.local
通过hosts文件别名为localhostserver {
listen 80;
server_name lms.local;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
if ($request_method = 'OPTIONS') {
return 204;
}
}
}
问题如下:python social auth检测到服务器运行在lms.local:8000
(via)上。因此,如果试图通过nginx代理使用SAML SSO,则会失败,并显示以下消息:
Authentication failed: SAML login failed: ['invalid_response'] (The response was received at http://lms.local:8000/auth/complete/tpa-saml/ instead of http://lms.local/auth/complete/tpa-saml/)
如果有帮助,将抛出导致此消息的异常
问题是:是否可以在同一个域上,但在不同端口上的反向代理后运行SP?Shibboleth wiki说它是在不同域的反向代理后面运行一个SP,但没有提到端口。在这个特殊情况下,反向代理发送
X-Forwarded-Host
和X-Forwarded-Port
头,所以我只是修改了django策略,使用这些值,而不是django提供的值(即request.get_host
和request.META['SERVER\u PORT']
),这两个请求产生了两个请求: