最新の安定バージョンについては、Spring Security 6.3.1 を使用してください!

DaoAuthenticationProvider

DaoAuthenticationProvider (Javadoc) は、UserDetailsService および PasswordEncoder を利用してユーザー名とパスワードを認証する AuthenticationProvider 実装です。

DaoAuthenticationProvider が Spring Security 内でどのように機能するかを見てみましょう。この図は、ユーザー名とパスワードの読み取りの図で AuthenticationManager がどのように機能するかの詳細を説明しています。

daoauthenticationprovider
図 1: DaoAuthenticationProvider の使用箇所

number 1 ユーザー名とパスワードの読み取りからの認証 Filter は、ProviderManager によって実装される AuthenticationManager に UsernamePasswordAuthenticationToken を渡します。

number 2ProviderManager は、型 DaoAuthenticationProviderAuthenticationProvider を使用するように構成されています。

number 3DaoAuthenticationProvider は UserDetailsService から UserDetails を検索します。

number 4 次に、DaoAuthenticationProvider は PasswordEncoder を使用して、前の手順で返された UserDetails のパスワードを検証します。

number 5 認証が成功すると、返される Authentication は型 UsernamePasswordAuthenticationToken であり、構成された UserDetailsService によって返される UserDetails であるプリンシパルを持ちます。最終的に、返された UsernamePasswordAuthenticationToken は認証 Filter によって SecurityContextHolder に設定されます。