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

2024-05-16 07:49:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个SAML2服务提供者(Open edX Platform),根据docs进行配置,否则工作正常。它在http://lms.local:8000上运行,与TestShib测试标识提供程序和其他第三方提供程序一起工作。在

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

  1. 显然,nginx运行在端口80上
  2. LMS(服务提供商)运行在端口8000上
  3. 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(通过^{})上运行。因此,如果试图通过nginx代理使用SAML SSO,则会失败,并显示以下消息:

^{pr2}$

如果这有帮助,则会在python-saml.OneLogin_Saml2_Response.is_valid中引发导致此消息的异常。在

问题是:是否可以在同一域上的反向代理后运行SP,但在不同的端口上?shibbolethwiki说,totally possible在不同域的反向代理后面运行一个SP,但没有提到端口。在


Tags: 端口程序localhosthttp消息代理serverlocal