まず、ログイン認証ベースのフィルタ・チェーン
ログイン認証プロセスは、コア春のセキュリティフィルター・チェーンです。リクエストが順番にフィルタチェインに順番に到着すると、そのすべてのフィルタチェーンを検証することにより、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
。
あなたの注意を楽しみにして
- ブロガーは最近、本を書いた:「手のタッチ手をSpringBootシリーズ章97節を学ぶためにあなたを教えるために-16」
- この記事は、再現される(エンはテキストのみをオンにしてはならない)ソースを示す:文字がオフジボ。