浅分析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を登録する
3.3データベースにユーザ情報DaoAuthentication Providerをロードする
ですから、ユーザー情報をロードして登録検証を行う必要があります。UserDetails Serviceインターフェースを実現し、loadUserByUsername方法を書き換える必要があります。パラメータはユーザーが入力したユーザー名です。戻り値はUserDetailです。
締め括りをつける
以上は小编が绍介したSpring Security登录の検证プロセスのソースコードです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。
Spring Securityの登録検証フローの核心はフィルタチェーンです。一つの要求が到着すると、フィルタチェーンの順に処理が行われ、すべてのフィルタチェーンの検証によってAPIインターフェースにアクセスすることができる。
SprigSecurityは複数の登録認証を提供しており、複数のFilterフィルタによって実現される。
二、ソースの説明と結合して登録検証プロセスを説明する。
ユーザー名とパスワードの登録方法を例にとって、Spring Securityの登録認証の流れを説明します。
2.1 UsernamePassword Authentication Filter
このフィルタは、ユーザ基本情報(ユーザ名、パスワード)をカプセル化し、登録フォームデータの受信に関する情報を定義する。例えば:
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に保管し、異なるタイプの登録検証に使用します。たとえば:
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登录の検证プロセスのソースコードです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。