クラス DaoAuthenticationProvider
- java.lang.Object
-
- org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider
-
- org.springframework.security.authentication.dao.DaoAuthenticationProvider
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.MessageSourceAware
、AuthenticationProvider
public class DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider
UserDetailsService
からユーザーの詳細を取得するAuthenticationProvider
実装。
フィールドサマリー
クラス org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider から継承されたフィールド
hideUserNotFoundExceptions, logger, messages
コンストラクターのサマリー
コンストラクター コンストラクター 説明 DaoAuthenticationProvider()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 protected void
additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication)
サブクラスが、特定の認証リクエストに対して返された(またはキャッシュされた)UserDetails
の追加チェックを実行できるようにします。protected Authentication
createSuccessAuthentication(java.lang.Object principal, Authentication authentication, UserDetails user)
成功したAuthentication
オブジェクトを作成します。protected void
doAfterPropertiesSet()
protected PasswordEncoder
getPasswordEncoder()
protected UserDetailsService
getUserDetailsService()
protected UserDetails
retrieveUser(java.lang.String username, UsernamePasswordAuthenticationToken authentication)
サブクラスが実装固有の場所からUserDetails
を実際に取得できるようにします。提示された資格情報が正しくない場合、すぐにAuthenticationException
をスローするオプションがあります(これは、ユーザーとしてリソースにバインドする必要がある場合に特に役立ちます。UserDetails
を生成します)。void
setPasswordEncoder(PasswordEncoder passwordEncoder)
パスワードのエンコードと検証に使用される PasswordEncoder インスタンスを設定します。void
setUserDetailsPasswordService(UserDetailsPasswordService userDetailsPasswordService)
void
setUserDetailsService(UserDetailsService userDetailsService)
クラス org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider から継承されたメソッド
afterPropertiesSet, authenticate, getPostAuthenticationChecks, getPreAuthenticationChecks, getUserCache, isForcePrincipalAsString, isHideUserNotFoundExceptions, setAuthoritiesMapper, setForcePrincipalAsString, setHideUserNotFoundExceptions, setMessageSource, setPostAuthenticationChecks, setPreAuthenticationChecks, setUserCache, supports
メソッドの詳細
additionalAuthenticationChecks
protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException
クラスからコピーされた説明:AbstractUserDetailsAuthenticationProvider
サブクラスが、特定の認証リクエストに対して返された(またはキャッシュされた)UserDetails
の追加チェックを実行できるようにします。通常、サブクラスは少なくともAuthentication.getCredentials()
とUserDetails.getPassword()
を比較します。UserDetails
および / またはUsernamePasswordAuthenticationToken
の追加のプロパティを比較するためにカスタムロジックが必要な場合、これらもこのメソッドに表示されます。- 次で指定:
- クラス
AbstractUserDetailsAuthenticationProvider
のadditionalAuthenticationChecks
- パラメーター:
userDetails
-AbstractUserDetailsAuthenticationProvider.retrieveUser(String, UsernamePasswordAuthenticationToken)
またはUserCache
から取得したものauthentication
- 認証が必要な現在のリクエスト- 例外:
AuthenticationException
- 資格情報を検証できなかった場合は AuthenticationException (一般的にBadCredentialsException
、AuthenticationServiceException
)
doAfterPropertiesSet
protected void doAfterPropertiesSet()
- オーバーライド:
- クラス
AbstractUserDetailsAuthenticationProvider
のdoAfterPropertiesSet
retrieveUser
protected final UserDetails retrieveUser(java.lang.String username, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException
クラスからコピーされた説明:AbstractUserDetailsAuthenticationProvider
サブクラスが実装固有の場所からUserDetails
を実際に取得できるようにします。提示された資格情報が正しくない場合、すぐにAuthenticationException
をスローするオプションがあります(これは、ユーザーとしてリソースにバインドする必要がある場合に特に役立ちます。UserDetails
を生成します)。AbstractUserDetailsAuthenticationProvider
はデフォルトでUserDetails
をキャッシュするため、キャッシュを実行するためにサブクラスは必要ありません。UserDetails
のキャッシュは、このメソッドでバインディングベースの戦略を採用するサブクラスによって資格情報の正確性が保証されている場合でも、キャッシュに依存する後続のリクエストがまだ資格情報を検証する必要があるため、さらなる複雑さを示します。サブクラスがキャッシュを無効にすることが重要です(UserDetails
がキャッシュされないため、このメソッドがリクエストを認証できる唯一のメソッドであることを確認したい場合)、またはサブクラスがAbstractUserDetailsAuthenticationProvider.additionalAuthenticationChecks(UserDetails, UsernamePasswordAuthenticationToken)
を実装してキャッシュされた資格情報を比較することを確認することUserDetails
と後続の認証リクエスト。ほとんどの場合、サブクラスはこのメソッドで資格情報インスペクションを実行せず、代わりに
AbstractUserDetailsAuthenticationProvider.additionalAuthenticationChecks(UserDetails, UsernamePasswordAuthenticationToken)
で実行するため、資格情報の検証に関連するコードを 2 つのメソッド間で複製する必要はありません。- 次で指定:
- クラス
AbstractUserDetailsAuthenticationProvider
のretrieveUser
- パラメーター:
username
- 取得するユーザー名authentication
- サブクラスがUserDetails
のバインディングベースの検索を実行する必要があるかもしれない認証リクエスト- 戻り値:
- ユーザー情報 (非
null
- 代わりに例外がスローされます) - 例外:
AuthenticationException
- 資格情報を検証できなかった場合 (通常、BadCredentialsException
、AuthenticationServiceException
またはUsernameNotFoundException
)
createSuccessAuthentication
protected Authentication createSuccessAuthentication(java.lang.Object principal, Authentication authentication, UserDetails user)
クラスからコピーされた説明:AbstractUserDetailsAuthenticationProvider
成功したAuthentication
オブジェクトを作成します。サブクラスがオーバーライドできるように保護されています。
サブクラスは通常、返された
Authentication
オブジェクトにユーザーが提供した元の資格情報(ソルトまたはエンコードされたパスワードではない)を格納します。- オーバーライド:
- クラス
AbstractUserDetailsAuthenticationProvider
のcreateSuccessAuthentication
- パラメーター:
principal
- それは返されたオブジェクトのプリンシパルでなければなりません (AbstractUserDetailsAuthenticationProvider.isForcePrincipalAsString()
メソッドによって定義されます)authentication
- 検証のためにプロバイダーに提示されたuser
- 実装によってロードされた- 戻り値:
- 成功した認証トークン
setPasswordEncoder
public void setPasswordEncoder(PasswordEncoder passwordEncoder)
パスワードのエンコードと検証に使用される PasswordEncoder インスタンスを設定します。設定されていない場合、PasswordEncoderFactories.createDelegatingPasswordEncoder()
を使用してパスワードが比較されます- パラメーター:
passwordEncoder
-PasswordEncoder
型のいずれかのインスタンスでなければなりません。
getPasswordEncoder
protected PasswordEncoder getPasswordEncoder()
setUserDetailsService
public void setUserDetailsService(UserDetailsService userDetailsService)
getUserDetailsService
protected UserDetailsService getUserDetailsService()
setUserDetailsPasswordService
public void setUserDetailsPasswordService(UserDetailsPasswordService userDetailsPasswordService)