2015-09-16 36 views
3

我有一个SAML2服务提供商(Open edX Platform,如果有所不同),根据docs配置并且其他方式正常工作。它运行在http://lms.local:8000,并且在TestShib测试身份提供商和其他第三方提供商时运行良好。SAML2服务提供商位于反向代理后面的非标准端口

问题从nginx反向代理引入时开始。设置如下:

  1. nginx的,很明显,在端口上运行80
  2. LMS(服务提供商)端口8000
  3. lms.local运行化名为本地主机通过hosts文件

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-socia l-auth检测到服务器运行在lms.local:8000(通过request.META['HTTP_PORT'])。所以,如果有人企图通过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/) 

是否有帮助,导致该消息被python-saml.OneLogin_Saml2_Response.is_valid抛出异常。

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

回答