1

@ImportResource アノテーションを使用して、Spring Boot と Spring Security SAML を統合できました。

さて、次のように進めたいと思います。

  1. ユーザーが IdP を選択 [DONE]。
  2. ログインを実行します (成功) [DONE]。
  3. SP は (SAMLCredential オブジェクトを解析することによって) ユーザー データを取得します [完了]。
  4. webapp は、SAML 経由で取得したユーザー ID (メールなど) が自分の DB に存在するかどうかを確認する必要がありました。
  5. a) はいの場合、webapp は DB からロールを読み取り、関連する特権を設定します。
    b) いいえの場合、ユーザーをシステムに挿入するために、webapp はサインアップ ページへのリダイレクトを実行する必要がありました。

UserDetailsS​​ervice 実装を使用してポイント 4 と 5 を実行するのが理にかなっていますか、それとも認証プロバイダー、フィルターなどを定義するセキュリティ コンテキストをセットアップする必要がありますか?

4

1 に答える 1

2

org.springframework.security.saml.userdetails.SAMLUserDetailsS ​​erviceを実装し、それをsamlAuthenticationProvider Beanにプラグインする必要があります。ユーザーが存在しない場合は、 UsernameNotFoundException例外をスローする必要があります。それ以外の場合は、DB からデータを入力して返すだけです。

その上で、独自のorg.springframework.security.web.authentication.AuthenticationFailureHandlerを実装し、それをsamlWebSSOProcessingFilter Beanにプラグインする必要があります。この実装は、パラメーターとして送信された UsernameNotFoundException で呼び出され、それに対する反応としてユーザーを正しいサインアップ ページにリダイレクトできます。

于 2014-04-28T11:52:49.320 に答える