Spring Security の認証フロー
Spring Securityの認証フローは次のとおりです。
- ユーザーはアプリケーションにアクセスし、ユーザー名とパスワードを提供します。
- 申請があると、アプリはユーザー名とパスワードを認証管理者(AuthenticationManager)に引き渡します。
- 認証マネージャーは、ユーザーが指定したユーザー名でユーザーの認証情報(ユーザー情報とロール情報)を検索します。
- 認証マネージャーでは、利用者の認証情報が発見された場合は、利用者が入力したパスワードを暗号化し、認証情報に格納されているパスワードと比較する。
- パスワードが一致すると、認証マネージャーはAuthntication(認証)というオブジェクトを作成します。
- 認証マネージャは、認証処理が成功したオブジェクトを認証プロバイダ(AuthenticationProvider)に渡し、以降の処理を実行します。
- 認証を成功した対象に対し、認証プロバイダーは必要に応じて追加の処理を行うことができます。たとえば、ユーザのロール情報を追加する、などです。
- 認証プロバイダーは、認証成功後に加工したオブジェクトを認証マネージャに戻します。
- 認証マネージャは認証に成功したオブジェクトをアプリケーションに返す。
- 認証に成功した対象内の情報をもとに、アプリケーションは特定のリソースへのアクセスまたは特定の操作の実行に対するユーザの権限を判断できます。