クラス 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
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクター修飾子コンストラクター説明protected
AbstractRememberMeServices
(StringSE key, UserDetailsService userDetailsService) メソッドのサマリー
修飾子と型メソッド説明void
autoLogin
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Spring Security クッキーを見つけて、それを区切られたトークンの配列にデコードし、processAutoLoginCookie メソッドを介して処理するためにサブクラスに送信するテンプレート実装。protected void
cancelCookie
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 永続的なログインを無効にするには、レスポンスに「キャンセルクッキー」(maxAge = 0) を設定します。protected Authentication
createSuccessfulAuthentication
(jakarta.servlet.http.HttpServletRequest request, UserDetails user) autoLogin メソッドから返される最終的な Authentication オブジェクトを作成します。protected StringSE[]
decodeCookie
(StringSE cookieValue) Cookie をデコードし、":" 区切り文字を使用してトークン文字列のセットに分割します。protected StringSE
encodeCookie
(StringSE[] cookieTokens) decodeCookie の逆操作。protected StringSE
extractRememberMeCookie
(jakarta.servlet.http.HttpServletRequest request) Spring Security を見つけて、リクエストに cookie を記憶させ、その値を返します。protected AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest,
?> protected StringSE
getKey()
protected int
protected UserDetailsService
void
loginFail
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 対話型認証の試行が行われたが、ユーザーによって提供された資格情報が欠落しているか、それ以外の場合は無効であるときに呼び出されます。void
loginSuccess
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication) 対話型認証の試行が成功するたびに呼び出されます。void
logout
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication authentication) LogoutHandler
の実装。protected void
onLoginFail
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) protected abstract void
onLoginSuccess
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication) Remember-Me ログインがリクエストされたときに loginSuccess から呼び出されます。protected abstract UserDetails
processAutoLoginCookie
(StringSE[] cookieTokens, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 送信された永続ログイン Cookie を処理するために autoLogin から呼び出されます。protected boolean
rememberMeRequested
(jakarta.servlet.http.HttpServletRequest request, StringSE parameter) remember-me ログインがリクエストされているかどうかをカスタマイズできます。void
setAlwaysRemember
(boolean alwaysRemember) void
setAuthenticationDetailsSource
(AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest, ?> authenticationDetailsSource) void
setAuthoritiesMapper
(GrantedAuthoritiesMapper authoritiesMapper) protected void
setCookie
(StringSE[] tokens, int maxAge, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) レスポンスに Cookie を設定します。void
setCookieDomain
(StringSE cookieDomain) void
setCookieName
(StringSE cookieName) void
setMessageSource
(org.springframework.context.MessageSource messageSource) void
setParameter
(StringSE parameter) ログインリクエスト中に remember-me がリクエストされたかどうかを確認するためにチェックする必要があるパラメーターの名前を設定します。void
setTokenValiditySeconds
(int tokenValiditySeconds) void
setUserDetailsChecker
(UserDetailsChecker userDetailsChecker) remember-me cookie を処理してユーザーに自動的にログインするときに、ユーザーのために取得したUserDetails
オブジェクトを検証するために使用する戦略を設定します。void
setUseSecureCookie
(boolean useSecureCookie) Cookie に安全なフラグを付けるかどうか。
フィールドの詳細
コンストラクターの詳細
AbstractRememberMeServices
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
autoLogin
public 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
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, 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