クラス AbstractRememberMeServices
java.lang.ObjectSE
org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
- 実装されているすべてのインターフェース:
org.springframework.beans.factory.Aware、org.springframework.beans.factory.InitializingBean、org.springframework.context.MessageSourceAware、LogoutHandler、RememberMeServices
public abstract class AbstractRememberMeServices
extends ObjectSE
implements RememberMeServices, org.springframework.beans.factory.InitializingBean, LogoutHandler, org.springframework.context.MessageSourceAware
RememberMeServices 実装の基本クラス。
- 導入:
- 2.0
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクター修飾子コンストラクター説明protectedAbstractRememberMeServices(StringSE key, UserDetailsService userDetailsService) メソッドのサマリー
修飾子と型メソッド説明void@Nullable AuthenticationautoLogin(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Spring Security クッキーを見つけて、それを区切られたトークンの配列にデコードし、processAutoLoginCookie メソッドを介して処理するためにサブクラスに送信するテンプレート実装。protected voidcancelCookie(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 永続的なログインを無効にするには、レスポンスに「キャンセルクッキー」(maxAge = 0) を設定します。protected AuthenticationcreateSuccessfulAuthentication(jakarta.servlet.http.HttpServletRequest request, UserDetails user) autoLogin メソッドから返される最終的な Authentication オブジェクトを作成します。protected StringSE[]decodeCookie(StringSE cookieValue) Cookie をデコードし、":" 区切り文字を使用してトークン文字列のセットに分割します。protected StringSEencodeCookie(StringSE[] cookieTokens) decodeCookie の逆操作。protected @Nullable StringSEextractRememberMeCookie(jakarta.servlet.http.HttpServletRequest request) Spring Security を見つけて、リクエストに cookie を記憶させ、その値を返します。protected AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest,?> protected StringSEgetKey()protected intprotected UserDetailsServicevoidloginFail(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 対話型認証の試行が行われたが、ユーザーによって提供された資格情報が欠落しているか、それ以外の場合は無効であるときに呼び出されます。voidloginSuccess(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication) 対話型認証の試行が成功するたびに呼び出されます。voidlogout(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, @Nullable Authentication authentication) LogoutHandlerの実装。protected voidonLoginFail(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) protected abstract voidonLoginSuccess(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication) Remember-Me ログインがリクエストされたときに loginSuccess から呼び出されます。protected abstract UserDetailsprocessAutoLoginCookie(StringSE[] cookieTokens, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 送信された永続ログイン Cookie を処理するために autoLogin から呼び出されます。protected booleanrememberMeRequested(jakarta.servlet.http.HttpServletRequest request, StringSE parameter) remember-me ログインがリクエストされているかどうかをカスタマイズできます。voidsetAlwaysRemember(boolean alwaysRemember) voidsetAuthenticationDetailsSource(AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest, ?> authenticationDetailsSource) voidsetAuthoritiesMapper(GrantedAuthoritiesMapper authoritiesMapper) protected voidsetCookie(StringSE[] tokens, int maxAge, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) レスポンスに Cookie を設定します。voidsetCookieCustomizer(ConsumerSE<jakarta.servlet.http.Cookie> cookieCustomizer) ConsumerSE を設定し、Cookie のカスタマイズを可能にします。voidsetCookieDomain(StringSE cookieDomain) voidsetCookieName(StringSE cookieName) voidsetMessageSource(org.springframework.context.MessageSource messageSource) voidsetParameter(StringSE parameter) ログインリクエスト中に remember-me がリクエストされたかどうかを確認するためにチェックする必要があるパラメーターの名前を設定します。voidsetTokenValiditySeconds(int tokenValiditySeconds) voidsetUserDetailsChecker(UserDetailsChecker userDetailsChecker) remember-me cookie を処理してユーザーに自動的にログインするときに、ユーザーのために取得したUserDetailsオブジェクトを検証するために使用する戦略を設定します。voidsetUseSecureCookie(boolean useSecureCookie) Cookie に安全なフラグを付けるかどうか。
フィールドの詳細
コンストラクターの詳細
AbstractRememberMeServices
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBeanのafterPropertiesSet
autoLogin
public @Nullable Authentication autoLogin(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Spring Security クッキーを見つけて、それを区切られたトークンの配列にデコードし、processAutoLoginCookie メソッドを介して処理するためにサブクラスに送信するテンプレート実装。返されたユーザー名は、ユーザーの UserDetails オブジェクトをロードするために使用され、有効な認証トークンを作成するために使用されます。
- 次で指定:
- インターフェース
RememberMeServicesのautoLogin - パラメーター:
request- 内で remember-me トークンを探すresponse- remember-me トークンを変更、キャンセル、変更するには- 戻り値:
- 有効な認証オブジェクト、またはリクエストが認証されない場合は
null
extractRememberMeCookie
protected @Nullable StringSE extractRememberMeCookie(jakarta.servlet.http.HttpServletRequest request) Spring Security を見つけて、リクエストに cookie を記憶させ、その値を返します。Cookie は名前で検索され、コンテキストパスを Cookie パスと照合することによっても検索されます。- パラメーター:
request- 認証される送信されたリクエスト- 戻り値:
- Cookie 値(存在する場合)、それ以外の場合は null。
createSuccessfulAuthentication
protected Authentication createSuccessfulAuthentication(jakarta.servlet.http.HttpServletRequest request, UserDetails user) autoLogin メソッドから返される最終的な Authentication オブジェクトを作成します。デフォルトでは、 RememberMeAuthenticationToken インスタンスを作成します。
- パラメーター:
request- 元のリクエスト。構成された AuthenticationDetailsSource はこれを使用して、返されたオブジェクトの詳細プロパティを構築します。user- UserDetailsService からロードされた UserDetails これはプリンシパルとして保存されます。- 戻り値:
- remember-me 認証済みユーザーの Authentication
decodeCookie
Cookie をデコードし、":" 区切り文字を使用してトークン文字列のセットに分割します。- パラメーター:
cookieValue- 送信された Cookie から取得した値- 戻り値:
- トークンの配列。
- 例外:
InvalidCookieException- Cookie が base64 でエンコードされていない場合。
encodeCookie
decodeCookie の逆操作。- パラメーター:
cookieTokens- エンコードされるトークン- 戻り値:
- ":" デリミタで連結されたトークンの base64 エンコーディング。
loginFail
public void loginFail(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) インターフェースからコピーされた説明:RememberMeServices対話型認証の試行が行われたが、ユーザーによって提供された資格情報が欠落しているか、それ以外の場合は無効であるときに呼び出されます。実装では、HttpServletRequestに示されているすべての remember-me トークンを無効にする必要があります。- 次で指定:
- インターフェース
RememberMeServicesのloginFail - パラメーター:
request- 無効な認証リクエストが含まれていたresponse- remember-me トークンを変更、キャンセル、変更するには
onLoginFail
protected void onLoginFail(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) loginSuccess
public void loginSuccess(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication) 対話型認証の試行が成功するたびに呼び出されます。実装では、HttpServletResponseに remember-me トークンを自動的に設定する場合がありますが、これはお勧めできません。代わりに、実装は通常、ブラウザーが HTTP POST パラメーターの存在など、記憶すべき認証の明示的なリクエストを提示したことを示すリクエストパラメーターを探す必要があります。受信リクエストを調べ、設定された "remember me" パラメーターが存在するかどうかを確認します。パラメーターが存在する場合、または alwaysRemember が true に設定されている場合、onLoginSuccess を呼び出します。
- 次で指定:
- インターフェース
RememberMeServicesのloginSuccess - パラメーター:
request- 有効な認証リクエストを含むresponse- remember-me トークンを変更、キャンセル、変更するにはsuccessfulAuthentication- 正常に認証されたプリンシパルを表す
onLoginSuccess
protected abstract void onLoginSuccess(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication) Remember-Me ログインがリクエストされたときに loginSuccess から呼び出されます。通常、サブクラスによって実装され、Remember-Me Cookie を設定し、実装で必要な場合はその記録を保存します。rememberMeRequested
protected boolean rememberMeRequested(jakarta.servlet.http.HttpServletRequest request, StringSE parameter) ログイン情報を記憶するかどうかをカスタマイズできます。デフォルトでは、alwaysRemember が設定されている場合、または構成されたパラメーター名がリクエストに含まれていて、値が "true" に設定されている場合に true を返します。- パラメーター:
request- 対話型ログインから送信されたリクエスト。これには、永続的なログインが必要であることを示す追加情報が含まれる場合があります。parameter- 設定された remember-me パラメーター名。- 戻り値:
- 永続ログインがリクエストされたことを示す情報がリクエストに含まれている場合は true。
processAutoLoginCookie
protected abstract UserDetails processAutoLoginCookie(StringSE[] cookieTokens, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws RememberMeAuthenticationException, UsernameNotFoundException 送信された永続的なログインクッキーを処理するために autoLogin から呼び出されます。サブクラスはクッキーを検証し、必要な追加の管理を実行する必要があります。- パラメーター:
cookieTokens- デコードおよびトークン化された Cookie 値request- リクエストresponse- 必要に応じて Cookie を変更できるようにするレスポンス。- 戻り値:
- Cookie が正常に検証された場合、対応するユーザーアカウントの UserDetails。
- 例外:
RememberMeAuthenticationException- Cookie が無効であるか、その他の理由でログインが無効である場合。UsernameNotFoundException- ログイン Cookie に対応するユーザーアカウントが見つからなかった場合(たとえば、ユーザーがシステムから削除された場合)。
cancelCookie
protected void cancelCookie(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 永続的なログインを無効にするには、レスポンスに「キャンセルクッキー」(maxAge = 0) を設定します。setCookie
protected void setCookie(StringSE[] tokens, int maxAge, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) レスポンスに Cookie を設定します。デフォルトでは、接続が安全である場合、安全な Cookie が使用されます。useSecureCookieプロパティをfalseに設定して、これをオーバーライドできます。trueに設定すると、Cookie には常に安全なフラグが付けられます。デフォルトでは、Cookie は HttpOnly としてマークされます。- パラメーター:
tokens- Cookie の値を作成するためにエンコードされるトークン。maxAge-Cookie.setMaxAge(int)に渡される値request- リクエストresponse- Cookie を追加するレスポンス。
logout
public void logout(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, @Nullable Authentication authentication) LogoutHandlerの実装。デフォルトの動作はcancelCookie()を呼び出すことです。- 次で指定:
- インターフェース
LogoutHandlerのlogout - パラメーター:
request- HTTP リクエストresponse- HTTP レスポンスauthentication- 現在のプリンシパルの詳細
setCookieName
setCookieDomain
getCookieName
setAlwaysRemember
public void setAlwaysRemember(boolean alwaysRemember) setParameter
ログインリクエスト中に remember-me がリクエストされたかどうかを確認するためにチェックする必要があるパラメーターの名前を設定します。これは、ログインフォームのチェックボックスに割り当てる名前と同じである必要があります。- パラメーター:
parameter- HTTP リクエストパラメーター
getParameter
getUserDetailsService
getKey
setTokenValiditySeconds
public void setTokenValiditySeconds(int tokenValiditySeconds) getTokenValiditySeconds
protected int getTokenValiditySeconds()setUseSecureCookie
public void setUseSecureCookie(boolean useSecureCookie) Cookie に安全なフラグを付けるかどうか。安全な Cookie は HTTPS 接続経由でのみ送信できるため、インターセプトされる可能性のある HTTP 経由で誤って送信することはできません。デフォルトでは、リクエストが安全であれば Cookie は安全です。HTTPS 経由で remember-me のみを使用する場合(推奨)、このプロパティを
trueに設定する必要があります。- パラメーター:
useSecureCookie- 常にユーザーの安全な Cookie を使用するにはtrueに設定し、使用を無効にするにはfalseに設定します。
getAuthenticationDetailsSource
protected AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest,?> getAuthenticationDetailsSource()setAuthenticationDetailsSource
public void setAuthenticationDetailsSource(AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest, ?> authenticationDetailsSource) setUserDetailsChecker
remember-me cookie を処理してユーザーに自動的にログインするときに、ユーザーのために取得したUserDetailsオブジェクトを検証するために使用する戦略を設定します。- パラメーター:
userDetailsChecker- アカウントの認証を許可しない場合(たとえば、アカウントがロックされている場合)に拒否できるようにするために、ユーザーオブジェクトに渡される戦略。デフォルトはAccountStatusUserDetailsCheckerインスタンスです。
setAuthoritiesMapper
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource) - 次で指定:
- インターフェース
org.springframework.context.MessageSourceAwareのsetMessageSource - 導入:
- 5.5
setCookieCustomizer
ConsumerSE を設定し、Cookie のカスタマイズを可能にします。- パラメーター:
cookieCustomizer- クッキーをカスタマイズする- 導入:
- 6.4