2017-05-09 10 views
1

SAMLのサービスプロバイダベースのSSOから始めました。ユーザーはログインを続行する前に電子メールを入力する必要があったため、状態変数が開始され、SSOに渡されました。それはコールバックURLを介して戻ってくるので、再び健全性のためにチェックされました。 CSRF攻撃から保護されています。アイデンティティプロバイダ(IdP)で状態パラメータを維持する方法SAML sso?

現在、IdPによって開始されたSSOでは、状態変数をまったく設定できません。ログインはIDプロバイダから開始され、認証トークンのみがアプリに提供されます。どのユーザーが最初から認証しているのか分かりません。状態変数チェックを削除すると、CSRF攻撃も発生する可能性があります。

私はomniauthrailsにも使用しています。これは状態変数を強制パラメータとし、SSOプロバイダはauth0です。

IdPによって開始されたSSOソリューションに状態変数を追加する方法は何ですか?

答えて

2

IDP-init-SSO SAMLフローのRelayStateパラメータの事実上の標準値は、SPでのSAMLアサーションが正常に検証された後にユーザーに送信するURLです。それは、そこにある大多数のSAML展開ではうまくいくでしょう。

しかし、このメカニズムは実際にCSRF攻撃から保護していません。これは、IDP-init-SSOのRelayStateの値でサイレントであり、CSRPを防ぐためにIDPとSPの間のメカニズムに合意するためです。そのパラメータの値。このようなメカニズムの1つは、RelayStateで符号付きの値を使用することですが、前述の通り、標準化されたものは何もないため、拡張性のないIDPとSPの間の双方向合意に依存します。

要約すると、あなたがSPに送信する「迷惑な」SAML応答のRelayStateの値として、ユーザーが行きたいURLの値を送信します。 IDPのSAMLスタックをどのようにして取得するかは、実装固有のものです。 Auth0の場合はhttps://auth0.com/docs/protocols/saml/saml-configuration#idp-initiated-ssoに、次のように表示されます。 https://{accountname}.auth0.com/samlp/YOUR_CLIENT_ID?RelayState=http://FINAL_DESTINATION_URL

関連する問題