クラス AbstractRememberMeServices

java.lang.ObjectSE
org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
実装されたすべてのインターフェース:
org.springframework.beans.factory.Awareorg.springframework.beans.factory.InitializingBeanorg.springframework.context.MessageSourceAwareLogoutHandlerRememberMeServices
既知の直属サブクラス
PersistentTokenBasedRememberMeServicesTokenBasedRememberMeServices

public abstract class AbstractRememberMeServices extends ObjectSE implements RememberMeServices, org.springframework.beans.factory.InitializingBean, LogoutHandler, org.springframework.context.MessageSourceAware
RememberMeServices 実装の基本クラス。
導入:
2.0
  • フィールドの詳細

    • DEFAULT_PARAMETER

      public static final StringSE DEFAULT_PARAMETER
      関連事項:
    • TWO_WEEKS_S

      public static final int TWO_WEEKS_S
      関連事項:
    • logger

      protected final org.apache.commons.logging.Log logger
    • messages

      protected org.springframework.context.support.MessageSourceAccessor messages
  • コンストラクターの詳細

  • メソッドの詳細

    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
    • autoLogin

      public Authentication autoLogin(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      Spring Security Cookie を見つけ、それをトークンの区切り配列にデコードし、 processAutoLoginCookie メソッドを介して処理するためにサブクラスに送信するテンプレート実装。

      返されたユーザー名は、ユーザーの UserDetails オブジェクトをロードするために使用され、有効な認証トークンを作成するために使用されます。

      次で指定:
      インターフェース RememberMeServicesautoLogin 
      パラメーター:
      request - 内で remember-me トークンを探す
      response - remember-me トークンを変更、キャンセル、変更するには
      戻り値:
      有効な認証オブジェクト、またはリクエストが認証されない場合は null 
    • extractRememberMeCookie

      protected 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

      protected StringSE[] decodeCookie(StringSE cookieValue) throws InvalidCookieException
      Cookie をデコードし、":" 区切り文字を使用してトークン文字列のセットに分割します。
      パラメーター:
      cookieValue - 送信された Cookie から取得した値
      戻り値:
      トークンの配列。
      例外:
      InvalidCookieException - Cookie が base64 でエンコードされていない場合。
    • encodeCookie

      protected StringSE encodeCookie(StringSE[] cookieTokens)
      decodeCookie の逆演算。
      パラメーター:
      cookieTokens - エンコードされるトークン
      戻り値:
      ":" デリミタで連結されたトークンの base64 エンコーディング。
    • loginFail

      public void loginFail(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      インターフェースからコピーされた説明: RememberMeServices
      対話型認証の試行が行われたが、ユーザーによって提供された資格情報が欠落しているか、それ以外の場合は無効であるときに呼び出されます。実装では、HttpServletRequest に示されているすべての remember-me トークンを無効にする必要があります。
      次で指定:
      インターフェース RememberMeServicesloginFail 
      パラメーター:
      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 を呼び出します。

      次で指定:
      インターフェース RememberMeServicesloginSuccess 
      パラメーター:
      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)
      Remember-me ログインがリクエストされているかどうかをカスタマイズできます。 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
      送信された永続的なログイン Cookie を処理するために autoLogin から呼び出されます。サブクラスは Cookie を検証し、必要な追加の管理を実行する必要があります。
      パラメーター:
      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)
      永続的なログインを無効にするために、レスポンスに「cookie をキャンセルする」(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() を呼び出すことです。
      次で指定:
      インターフェース LogoutHandlerlogout 
      パラメーター:
      request - HTTP リクエスト
      response - HTTP レスポンス
      authentication - 現在のプリンシパルの詳細
    • setCookieName

      public void setCookieName(StringSE cookieName)
    • setCookieDomain

      public void setCookieDomain(StringSE cookieDomain)
    • getCookieName

      protected StringSE getCookieName()
    • setAlwaysRemember

      public void setAlwaysRemember(boolean alwaysRemember)
    • setParameter

      public void setParameter(StringSE parameter)
      ログインリクエスト中に remember-me がリクエストされたかどうかを確認するためにチェックする必要があるパラメーターの名前を設定します。これは、ログインフォームのチェックボックスに割り当てる名前と同じである必要があります。
      パラメーター:
      parameter - HTTP リクエストパラメーター
    • getParameter

      public StringSE getParameter()
    • getUserDetailsService

      protected UserDetailsService getUserDetailsService()
    • getKey

      public StringSE 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

      public void setUserDetailsChecker(UserDetailsChecker userDetailsChecker)
      remember-me cookie を処理してユーザーに自動的にログインするときに、ユーザーのために取得した UserDetails オブジェクトを検証するために使用する戦略を設定します。
      パラメーター:
      userDetailsChecker - アカウントの認証を許可しない場合(たとえば、アカウントがロックされている場合)に拒否できるようにするために、ユーザーオブジェクトに渡される戦略。デフォルトは AccountStatusUserDetailsChecker インスタンスです。
    • setAuthoritiesMapper

      public void setAuthoritiesMapper(GrantedAuthoritiesMapper authoritiesMapper)
    • setMessageSource

      public void setMessageSource(org.springframework.context.MessageSource messageSource)
      次で指定:
      インターフェース org.springframework.context.MessageSourceAwaresetMessageSource 
      導入:
      5.5