2016-09-29 12 views
1

私は自分のサイトでSAMLサポートを実装しています。私はOneLogin's Python SAML Toolkit私のDjangoアプリでこれを行うために使用しています。ローカルマシンの場合は、http://127.0.0.1:8000(完全にローカル)またはhttp://192.168.x.x:800(ローカルネットワーク)のいずれかで、すべてがOneLoginテストアプリとAzureアプリの両方に接続しても問題ありません。すべてのURLをhttpsに強制するステージングサーバーでこれを試行すると、処理が失敗します。 IE11はまったく奇妙であるアイデンティティプロバイダの応答、のいずれかのデータをPOSTに失敗し、一般的に私はそうのようなツールキットからのエラーを取得:SAMLと強制SSL

The response was received at https://dev.mysite.com:80/saml/connect/ instead of https://dev.mysite.com/saml/connect/ 

物事が適切に設定されるべきであるので、IDPがしようとして巻き取りますポート80上のステージングサーバーにPOSTして戻してください。混乱します。私が最初からポート80を使用するようにすべて設定した場合、Chromeはhttps://...:80を安全と信用していないためにフリークアウトします。この問題を参照しているドキュメントやその他の質問は見つかりません。

Important: Ensure that your URLs begin with http, not https. 

が、理由として何の説明はありません。私が見てきたすべてがthe OneLogin Python setup instructionsにこのノートです。私は完全に混乱しています。

答えて

0

python-samlはhttpsまたはhttpをサポートしています。

必要なのはprepare_django_request方法 (https://github.com/onelogin/python-saml/blob/master/demo-django/demo/views.py#L18

+0

でこのデモをチェックし、要求のpropertly値を設定することです私は設定にこれらの値を適切にです。それは問題ではありません。 IdPはいつもhttpを使用してポストバックしているようです。私のdevサーバはhttpsに強制的にアップグレードします。私はすぐに詳細を提供しようとします。 – grantpatterson

+0

さて、私はこのデモの_読んで読んで_私たちの問題を解決したと認めます: #サーバがプロキシやバランサの後ろにHTTP_X_FORWARDEDフィールドを使用している場合 基本的に、我々は 'request.META ['HTTP_X_FORWARDED_PORT']' ELBの後ろにあります。 (Django 1.9の 'get_port()'はこれには便利です)。これはポート80がどこから来ているのか、混乱させるものです。 – grantpatterson

関連する問題