クラス DigestAuthenticationFilter

  • 実装されたすべてのインターフェース:
    javax.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​(javax.servlet.ServletRequest request,
                             javax.servlet.ServletResponse response,
                             javax.servlet.FilterChain chain)
                      throws java.io.IOException,
                             javax.servlet.ServletException
        次で指定:
        インターフェース javax.servlet.FilterdoFilter 
        例外:
        java.io.IOException
        javax.servlet.ServletException
      • getUserCache

        public UserCache getUserCache()
      • setAuthenticationDetailsSource

        public void setAuthenticationDetailsSource​(AuthenticationDetailsSource<javax.servlet.http.HttpServletRequest,​?> authenticationDetailsSource)
      • 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