我正在嘗試讓OneLogin Saml身份驗證在我的實時服務器上工作,並且正在運行時遇到與我的AWS負載平衡器設置有關的問題。我認爲問題在於我有一個經典的負載均衡器,它使用AWS通配符HTTPS證書在端口80和443上偵聽。負載均衡器將這兩個端口轉發到我的服務器上的端口80,並添加HTTP_X_FORWARDED_PROTO標頭。Onelogin SAML與AWS負載平衡器
當我使用我的正常開發服務器(不是負載均衡器後面)SAML身份驗證正常工作。我正在得到一個適當的迴應。但是,當我推動生存時,SAML響應返回一個空的POST字典,而沒有RELAY STATE。
任何想法爲什麼POST將是空的?
我的設置是:
- 的Python與SAML連接器開發服務器上
- 工作正常社會權威性
- 當我用我的直播服務器在防火牆後面,響應空
我懷疑它與我的SSL證書有關,或者我的負載均衡器將443轉發到端口80上的服務器並添加了標頭。我試圖通過分析轉發的報頭創建AUTH請求解決這個:
def _create_saml_auth(self, idp):
"""Get an instance of OneLogin_Saml2_Auth"""
config = self.generate_saml_config(idp)
request_info = {
'https': 'on' if self.strategy.request_is_secure() else 'off',
'http_host': self.strategy.request_host(),
'script_name': self.strategy.request_path(),
'server_port': self.strategy.request_port(),
'get_data': self.strategy.request_get(),
'post_data': self.strategy.request_post(),
}
if 'HTTP_X_FORWARDED_PROTO' in self.strategy.request.META:
request_info['https'] = 'on' if self.strategy.request.META.get('HTTP_X_FORWARDED_PROTO') == 'https' else 'off'
request_info['server_port'] = self.strategy.request.META.get('HTTP_X_FORWARDED_PORT')
但仍然無法返回從Onelogin SAML響應的empyy POST字典。儘管使用HTTPS正確生成初始url。
有沒有人有類似的問題。我卡住了,很想讓Onelogin工作。
非常感謝您的時間。
乾杯,
菲爾
評論這個線程: https://github.com/onelogin/python-saml/issues/75#issuecomment-108647017 – smartin