2016-10-26 5 views
0

私は、Spring Samlソリューションを使用して、tomcatで動作する残りのAPIを保護しています。ログイン1回Spring SAML CRSF

私はspring-security-saml2-core 1.0.2.RELEASEをSpringセキュリティ4.1.1.RELEASEとともに使用しています。

私はOneloginテストコネクタ/アプリケーションを作成しました。 http://localhost:8080/app-name/api/getstateにアクセスしようとすると、正しくOneloginにリダイレクトされ、認証できます。その後、http://localhost:8080/app-name/saml/SSO/alias/defaultAliasにリダイレクトされます。

問題::「セッションが見つからなかったため、提供されたCSRFトークンを確認できませんでした」リダイレクト後

これは、Spring SAML Extension and Spring Security CSRF Protection Conflictのとおりです。

VladimírSchäferが提供するソリューションは、SAMLエンドポイントのsecurityContextでCSRFを無効にする必要があることを示しています。

これは私が一般的なセキュリティと春のセキュリティを春に新しいですと、私は関連クエリを持っていますが、動作します:

  • が、それはこのシナリオでのREST APIにCSRFをオフにする安全な/最高praciticeですSpring SAML URLの場合

  • CSRFがスプリングセキュリティで有効になっている場合、OneloginがSpring Samlと連携する方法はありますか?

答えて

2

私は春のエキスパートではありませんが、あなたの疑問を解決できると思います。

CSRF(Cross-Site Request Forgery)は、エンドユーザが現在認証されているWebアプリケーションで不要なアクションを強制的に実行する攻撃です。

SAMLには、エンドポイントで署名付きSAMLメッセージを検証する必要があるなど、不要な操作を防止する独自のメカニズムがあります(正当なソースのみがSAMLメッセージに正しく署名できるため、偽装/ )。

だから私は、次のSPエンドポイントにCSRFの保護を無効にすることが正しいと考えていることに基づく:

  • ACS。アサーションコンシューマサービス
  • SLS。単一ログアウトサービス

SP開始SSOまたはSP開始SLOエンドポイントを開始する際、CSRF保護を維持することは問題ありません。

他の質問に関連して、ユニークなやり方は、春にCSRF値で状態を保存し、状態をRelayStateパラメータとして回復する方法を渡すことです。 OneloginはSAMLResponseに加えてrelayStateパラメータを返送し、あなたはあなたの状態を回復し、CSRFを回復し、CSRFトークンエラーを回避することができます。

+0

ありがとうございました.. – theforemen

関連する問題