Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反向代理后面的非标准端口上的SAML2服务提供程序_Python_Nginx_Reverse Proxy_Saml 2.0_Python Social Auth - Fatal编程技术网

Python 反向代理后面的非标准端口上的SAML2服务提供程序

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 / {

我有一个SAML2服务提供者(如果有区别的话),根据配置,否则工作正常。它在测试身份提供商和其他第三方提供商处运行,并与之配合良好

当引入nginx反向代理时,问题就开始了。设置如下所示:

  • nginx显然在端口80上运行
  • LMS(服务提供商)在端口8000上运行
  • lms.local
    通过hosts文件别名为localhost
  • Nginx具有以下站点配置:

    server {
        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']
    ),这两个请求产生了两个请求: