2015-09-16 32 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,但沒有提及端口。

回答