春のセキュリティログの解析ソースコードの検証プロセス

まず、ログイン認証ベースのフィルタ・チェーン

ログイン認証プロセスは、コア春のセキュリティフィルター・チェーンです。リクエストが順番にフィルタチェインに順番に到着すると、そのすべてのフィルタチェーンを検証することにより、APIインタフェースにアクセスすることができます。

ファイル

SpringSecurityのログイン認証は、次のようなフィルタのフィルタ、様々な方法で実装される、さまざまな方法を提供しています:

  • BasicAuthenticationFilterは、そのログイン認証モードを実現HttpBasic
  • ユーザー名パスワードログイン認証を達成UsernamePasswordAuthenticationFilter
  • 「私を忘れないでください」機能を達成するためにRememberMeAuthenticationFilterログイン認証
  • SMSの検証コードのログイン認証を実装SmsCodeAuthenticationFilter
  • 処理SocialAuthenticationFilterソーシャルメディアのログイン認証を達成する方法
  • Oauth2AuthenticationProcessingFilterとOauth2ClientAuthenticationProcessingFilterはのOAuth2認証モードを達成します

私たちの様々なニーズや構成を実現し、異なるフィルタは、アプリケーションにロードされます。

第二に、ログイン認証プロセスを説明するためのソースコードの組み合わせ

私たちは、どのような春のセキュリティログイン認証プロセスを説明するためのユーザー名、パスワード、ログインの例を持っています。

ファイル

2.1 UsernamePasswordAuthenticationFilter

フィルタパッケージの基本的なユーザー情報(ユーザー名、パスワード)は、受信した情報に関連したログインフォームのデータを定義します。以下のような:

  • デフォルトのユーザ名とパスワードのフォーム入力ボックス名は、ユーザ名、パスワードです
  • デフォルトのパスは、POSTメソッドを使用して、ログオン要求/ログインです

ファイル
ファイル

方法2.2 AbstractAuthenticationProcessingFilterののdoFilter検証プロセス

UsernamePasswordAuthenticationFilterは抽象クラスAbstractAuthenticationProcessingFilter、抽象クラスの定義の治療の成功の確認と検証の失敗から継承されました。
ファイル

2.3後の検証及び妥当性確認の成功または失敗後のハンドラハンドラ

ファイル

それは私たちが治療のカスタム検証成否を必要とするときである、またはAuthenticationSuccessHandler AuthenticationfailureHandlerインタフェースを達成するために行きます

ファイル

第三に、ログイン認証の詳細内部

管理providerManagerの3.1複数の認証方法

AuthenticationManagerにproviderManagerの継承は、ログイン認証のコアクラスです。ログイン認証の種類ごとに、よりAuthenticationProviderよりproviderManagerの親権、。例えば:

  • RememberMeAuthenticationProviderは「私を忘れないでください」機能のログイン検証ロジックを定義します
  • データベース・ユーザー情報を読み込むDaoAuthenticationProvider、ユーザーのログインパスワードの確認
public class ProviderManager implements AuthenticationManager, MessageSourceAware, InitializingBean {
    ……
    private List<AuthenticationProvider> providers;
    ……

以下は、特定のログイン検証ロジックの実装前に、このような方法でサポートされた場合にのみ、別のログイン認証AuthenticationProviderを横断、providerManagerのコアのソースコードです。
ファイル

3.2インタフェースのログイン認証AuthenticationProvider

public interface AuthenticationProvider {
    Authentication authenticate(Authentication var1) throws AuthenticationException;

    boolean supports(Class<?> var1);
}

AuthenticationProvider実装クラスは、特定のログイン検証ロジックを定義します

ファイル

3.3データベースの負荷ユーザ情報DaoAuthenticationProvider

public class DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider {

ソース・データベースからユーザー情報を取得します

ファイル

我々は、ユーザのログイン認証情報をロードする必要があるときに、私たちが実装する必要があるUserDetailsServiceインターフェイス、書き換えloadUserByUsername方法を、パラメータは、ユーザーが入力したユーザー名です。戻り値がありますUserDetails

あなたの注意を楽しみにして

おすすめ

転載: www.cnblogs.com/zimug/p/11880050.html