DaoAuthenticationProvider

DaoAuthenticationProvider (Javadoc) は、UserDetailsServicePasswordEncoder を使用してユーザー名とパスワードを認証する AuthenticationProvider 実装です。

このセクションでは、Spring Security 内で DaoAuthenticationProvider がどのように機能するかを調べます。次の図は、ユーザー名とパスワードの読み取りセクションの図で AuthenticationManager の動作を説明しています。

daoauthenticationprovider
図 1: DaoAuthenticationProvider の使用箇所

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

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

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

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

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