浅分析Spring Security登録検証プロセスのソースコード


一、登録認証はフィルタチェーンに基づいています。
Spring Securityの登録検証フローの核心はフィルタチェーンです。一つの要求が到着すると、フィルタチェーンの順に処理が行われ、すべてのフィルタチェーンの検証によってAPIインターフェースにアクセスすることができる。

SprigSecurityは複数の登録認証を提供しており、複数のFilterフィルタによって実現される。
  • Baic Authentication Filterによって実現されるのは、HttpBaicモードの登録認証
  • である。
  • UsernamePassword Authentication Filterは、ユーザ名パスワードの登録認証
  • を実現する。
  • Remember MeAuthentication Filterが登録認証を実現する「私を記憶する」機能
  • SmsCodeAuthentication Filterは、ショートメッセージの検証コード登録認証を実現する
  • SocialAuthentication Filterソーシャルメディア方式登録認証を実現する処理
  • Oauth 2 Authentication ProcessigFilterとOauth 2 lient Authentication Processing FilterはOauth 2の認証方式を実現します。
  • 私達の異なった需要によって実現して配置して、異なったFilterは応用の中でロードされます。
    二、ソースの説明と結合して登録検証プロセスを説明する。
    ユーザー名とパスワードの登録方法を例にとって、Spring Securityの登録認証の流れを説明します。

    2.1 UsernamePassword Authentication Filter
    このフィルタは、ユーザ基本情報(ユーザ名、パスワード)をカプセル化し、登録フォームデータの受信に関する情報を定義する。例えば:
  • デフォルトのフォーム名パスワードinput枠nameはusername、password
  • です。
  • デフォルトの処理登録要求パスは、/login、POSTメソッドを使用しています。


  • 2.2 AbstractAuthentication ProcessigFilterのドFilter方法の検証過程
    UsernamePassword AuthenticationFilterは、検証成功と検証失敗の処理方法を定義する抽象的なクラスAbstractAuthentication ProcessigFilterから継承される。

    2.3検証に成功した後のHandlerと検証に失敗した後のhandler

    つまり、成功または失敗の処理方法をカスタマイズする必要がある場合、Authentication Success HandlerまたはAuthentication failure Handlerインターフェースを実現します。

    三、ログイン認証内部の詳細
    3.1複数の認証方式の管理Provider Manager
    Provider ManagerはAuthenticationManagerに引き継がれて登録検証の中核クラスです。複数のAuthentication ProviderをProvider Managerに保管し、異なるタイプの登録検証に使用します。たとえば:
  • Remember MeAuthentication Providerが「私を記憶する」機能を定義した登録検証ロジック
  • DaoAuthentication Providerは、データベースユーザ情報をロードし、ユーザパスワードの登録検証を行う

  • public class Provider Manager implemens AuthenticationManager、Message SourceAware、InitializingBen{
        ……
        prvate List<AuthenticationProvider>providers;
        ……
    以下はProvider Managerの核心のソースコードで、異なった登録の検証のAuthentication Providerを遍歴して、このような方式が支持される時だけ、具体的な登録の検証ロジックを実行します。

    3.2認証インターフェースAuthenticationProviderを登録する
    
    public interface AuthenticationProvider {
     Authentication authenticate(Authentication var1) throws AuthenticationException;
     boolean supports(Class<?> var1);
    }
    Authentication Providerの実装クラスは具体的な登録検証ロジックを定義しています。

    3.3データベースにユーザ情報DaoAuthentication Providerをロードする
    
    public class DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider {
    データベースからユーザー情報のソースを取得します。

    ですから、ユーザー情報をロードして登録検証を行う必要があります。UserDetails Serviceインターフェースを実現し、loadUserByUsername方法を書き換える必要があります。パラメータはユーザーが入力したユーザー名です。戻り値はUserDetailです。
    締め括りをつける
    以上は小编が绍介したSpring Security登录の検证プロセスのソースコードです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
    本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。