クラス PersistentTokenBasedRememberMeServices
- java.lang.Object
-
- org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
-
- org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.MessageSourceAware
、LogoutHandler
、RememberMeServices
public class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
Barry Jaspan の永続的ログイン Cookie のベストプラクティスの改善に基づくRememberMeServices
実装。ユーザー名は Cookie の一部として保存されず、PersistentTokenRepository
の実装を介して永続ストアから取得されるという点で、前述のアプローチに若干の変更があります。後者はシリーズ識別子に一意の制約を課す必要があるため、同じ識別子を 2 人の異なるユーザーに割り当てることはできません。パスワードの変更、ユーザーの削除、ユーザーステータスの設定などのユーザー管理は、ユーザーの永続的なトークンのメンテナンスと組み合わせる必要があります。
このクラスはトークンの作成日を使用して、提示された Cookie が設定された tokenValiditySeconds プロパティより古いかどうかを確認し、この場合は認証を拒否しますが、これらのトークンをストレージから削除しないことに注意してください。期限切れのトークンをデータベースから削除するには、適切なバッチプロセスを定期的に実行する必要があります。
- 導入:
- 2.0
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static int
DEFAULT_SERIES_LENGTH
static int
DEFAULT_TOKEN_LENGTH
クラス org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices から継承されたフィールド
DEFAULT_PARAMETER, logger, messages, SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, TWO_WEEKS_S
コンストラクターのサマリー
コンストラクター コンストラクター 説明 PersistentTokenBasedRememberMeServices(java.lang.String key, UserDetailsService userDetailsService, PersistentTokenRepository tokenRepository)
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 protected java.lang.String
generateSeriesData()
protected java.lang.String
generateTokenData()
void
logout(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Authentication authentication)
LogoutHandler
の実装。protected void
onLoginSuccess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Authentication successfulAuthentication)
新しいシリーズ番号で新しい永続的ログイントークンを作成し、データを永久トークンリポジトリに保存し、対応する Cookie をレスポンスに追加します。protected UserDetails
processAutoLoginCookie(java.lang.String[] cookieTokens, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
シリーズ ID を使用して、提示された Cookie データをトークンリポジトリで検索します。void
setSeriesLength(int seriesLength)
void
setTokenLength(int tokenLength)
void
setTokenValiditySeconds(int tokenValiditySeconds)
クラス org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices から継承されたメソッド
afterPropertiesSet, autoLogin, cancelCookie, createSuccessfulAuthentication, decodeCookie, encodeCookie, extractRememberMeCookie, getAuthenticationDetailsSource, getCookieName, getKey, getParameter, getTokenValiditySeconds, getUserDetailsService, loginFail, loginSuccess, onLoginFail, rememberMeRequested, setAlwaysRemember, setAuthenticationDetailsSource, setAuthoritiesMapper, setCookie, setCookieDomain, setCookieName, setMessageSource, setParameter, setUserDetailsChecker, setUseSecureCookie
コンストラクターの詳細
PersistentTokenBasedRememberMeServices
public PersistentTokenBasedRememberMeServices(java.lang.String key, UserDetailsService userDetailsService, PersistentTokenRepository tokenRepository)
メソッドの詳細
processAutoLoginCookie
protected UserDetails processAutoLoginCookie(java.lang.String[] cookieTokens, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
シリーズ ID を使用して、提示された Cookie データをトークンリポジトリで検索します。データが永続ストアのデータと正常に比較されると、新しいトークンが生成され、同じシリーズで保存されます。対応する Cookie 値がレスポンスに設定されます。- 次で指定:
- クラス
AbstractRememberMeServices
のprocessAutoLoginCookie
- パラメーター:
cookieTokens
- シリーズとトークンの値request
- リクエストresponse
- 必要に応じて Cookie を変更できるようにするレスポンス。- 戻り値:
- Cookie が正常に検証された場合、対応するユーザーアカウントの UserDetails。
- 例外:
RememberMeAuthenticationException
- 送信された Cookie に対応するトークンが保存されていない場合、または永続ストアのトークンの有効期限が切れている場合。InvalidCookieException
- Cookie に期待どおりの 2 つのトークンがない場合。CookieTheftException
- 提示されたシリーズ値が見つかったが、格納されたトークンが提示されたものと異なる場合。
onLoginSuccess
protected void onLoginSuccess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Authentication successfulAuthentication)
新しいシリーズ番号で新しい永続的ログイントークンを作成し、データを永久トークンリポジトリに保存し、対応する Cookie をレスポンスに追加します。- 次で指定:
- クラス
AbstractRememberMeServices
のonLoginSuccess
logout
public void logout(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Authentication authentication)
クラスからコピーされた説明:AbstractRememberMeServices
LogoutHandler
の実装。デフォルトの動作はcancelCookie()
を呼び出すことです。- 次で指定:
- インターフェース
LogoutHandler
のlogout
- オーバーライド:
- クラス
AbstractRememberMeServices
のlogout
- パラメーター:
request
- HTTP リクエストresponse
- HTTP レスポンスauthentication
- 現在のプリンシパルの詳細
generateSeriesData
protected java.lang.String generateSeriesData()
generateTokenData
protected java.lang.String generateTokenData()
setSeriesLength
public void setSeriesLength(int seriesLength)
setTokenLength
public void setTokenLength(int tokenLength)
setTokenValiditySeconds
public void setTokenValiditySeconds(int tokenValiditySeconds)
- オーバーライド:
- クラス
AbstractRememberMeServices
のsetTokenValiditySeconds