クラス DigestAuthenticationFilter

java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.security.web.authentication.www.DigestAuthenticationFilter
実装されたすべてのインターフェース:
jakarta.servlet.Filterorg.springframework.beans.factory.Awareorg.springframework.beans.factory.BeanNameAwareorg.springframework.beans.factory.DisposableBeanorg.springframework.beans.factory.InitializingBeanorg.springframework.context.EnvironmentAwareorg.springframework.context.MessageSourceAwareorg.springframework.core.env.EnvironmentCapableorg.springframework.web.context.ServletContextAware

public class DigestAuthenticationFilter extends org.springframework.web.filter.GenericFilterBean implements org.springframework.context.MessageSourceAware
HTTP リクエストのダイジェスト認証ヘッダーを処理し、結果を SecurityContextHolder に入れます。

このフィルターが処理するように設計されているものの詳細な背景については、RFC 2617(このフィルターは RFC 2617 または RFC 2069 を実装するクライアントをサポートしますが、RFC 2069 に取って代わりました)を参照してください。

このフィルターは、リモートプロトコルクライアント(Hessian や SOAP など)と標準ユーザーエージェント(Internet Explorer や FireFox など)の両方にダイジェスト認証サービスを提供するために使用できます。

このダイジェスト実装は、呼び出し間でセッション状態を保存する必要を回避するように設計されています。すべてのセッション管理情報は、DigestAuthenticationEntryPoint によってクライアントに送信される "nonce" に保存されます。

認証が成功すると、結果の Authentication オブジェクトが SecurityContextHolder に配置されます。

認証が失敗すると、AuthenticationEntryPoint 実装が呼び出されます。これは常に DigestAuthenticationEntryPoint である必要があり、ダイジェスト認証を介して再度認証するようユーザーに促します。

ダイジェスト認証には制限がありますが、基本認証よりも包括的で安全なソリューションです。ダイジェスト認証の基本認証に対する利点の詳細については、RFC 2617 セクション 4 を参照してください。これには、ダイジェスト認証がまだ課している制限についての解説も含まれています。

導入:
1.0.0
  • フィールドの詳細

    • messages

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

    • DigestAuthenticationFilter

      public DigestAuthenticationFilter()
  • メソッドの詳細

    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
      オーバーライド:
      クラス org.springframework.web.filter.GenericFilterBeanafterPropertiesSet 
    • doFilter

      public void doFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain) throws IOExceptionSE, jakarta.servlet.ServletException
      次で指定:
      インターフェース jakarta.servlet.FilterdoFilter 
      例外:
      IOExceptionSE
      jakarta.servlet.ServletException
    • getAuthenticationEntryPoint

      protected final DigestAuthenticationEntryPoint getAuthenticationEntryPoint()
    • getUserCache

      public UserCache getUserCache()
    • getUserDetailsService

      public UserDetailsService getUserDetailsService()
    • setAuthenticationDetailsSource

      public void setAuthenticationDetailsSource(AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest,?> authenticationDetailsSource)
    • setAuthenticationEntryPoint

      public void setAuthenticationEntryPoint(DigestAuthenticationEntryPoint authenticationEntryPoint)
    • setMessageSource

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

      public void setPasswordAlreadyEncoded(boolean passwordAlreadyEncoded)
    • setUserCache

      public void setUserCache(UserCache userCache)
    • setUserDetailsService

      public void setUserDetailsService(UserDetailsService userDetailsService)
    • setCreateAuthenticatedToken

      public void setCreateAuthenticatedToken(boolean createAuthenticatedToken)
      このプロパティを設定した場合、 認証と UserDetailsService によってロード権限で満たされて、ダイジェスト認証に成功した後に作成された認証オブジェクトは、マークされます。AuthenticationProvider によって再認証されることはありません。つまり、ユーザーのパスワードのみがチェックされ、isEnabled() や isAccountNonExpired() などのフラグはチェックされません。このフラグを有効にすると、時間を節約できます。そうしないと、UserDetailsService が 2 回呼び出されます。より安全なオプションは、UserDetailsService の周囲にキャッシュを導入することですが、これらのフラグを使用しない場合は、このオプションを安全に有効にすることもできます。
      パラメーター:
      createAuthenticatedToken - デフォルトは false
    • setSecurityContextRepository

      public void setSecurityContextRepository(SecurityContextRepository securityContextRepository)
      認証が成功したときに SecurityContext を保存するように SecurityContextRepository を設定します。デフォルトのアクションは、SecurityContext を保存しないことです。
      パラメーター:
      securityContextRepository - 使用する SecurityContextRepository。null にはできません。
    • setSecurityContextHolderStrategy

      public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
      使用する SecurityContextHolderStrategy を設定します。デフォルトのアクションは、SecurityContextHolder に格納されている SecurityContextHolderStrategy を使用することです。
      導入:
      5.8