クラス DigestAuthenticationFilter
java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.security.web.authentication.www.DigestAuthenticationFilter
- 実装されたすべてのインターフェース:
jakarta.servlet.Filter
、org.springframework.beans.factory.Aware
、org.springframework.beans.factory.BeanNameAware
、org.springframework.beans.factory.DisposableBean
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.EnvironmentAware
、org.springframework.context.MessageSourceAware
、org.springframework.core.env.EnvironmentCapable
、org.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
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
void
doFilter
(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain) protected final DigestAuthenticationEntryPoint
void
setAuthenticationDetailsSource
(AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest, ?> authenticationDetailsSource) void
setAuthenticationEntryPoint
(DigestAuthenticationEntryPoint authenticationEntryPoint) void
setCreateAuthenticatedToken
(boolean createAuthenticatedToken) このプロパティを設定した場合、 認証と UserDetailsService によってロード権限で満たされて、ダイジェスト認証に成功した後に作成された認証オブジェクトは、マークされます。void
setMessageSource
(org.springframework.context.MessageSource messageSource) void
setPasswordAlreadyEncoded
(boolean passwordAlreadyEncoded) void
setSecurityContextHolderStrategy
(SecurityContextHolderStrategy securityContextHolderStrategy) 使用するSecurityContextHolderStrategy
を設定します。void
setSecurityContextRepository
(SecurityContextRepository securityContextRepository) 認証が成功したときにSecurityContext
を保存するようにSecurityContextRepository
を設定します。void
setUserCache
(UserCache userCache) void
setUserDetailsService
(UserDetailsService userDetailsService) クラス org.springframework.web.filter.GenericFilterBean から継承されたメソッド
addRequiredProperty, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
フィールドの詳細
messages
protected org.springframework.context.support.MessageSourceAccessor messages
コンストラクターの詳細
DigestAuthenticationFilter
public DigestAuthenticationFilter()
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
org.springframework.web.filter.GenericFilterBean
のafterPropertiesSet
doFilter
public void doFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain) throws IOExceptionSE, jakarta.servlet.ServletException - 次で指定:
- インターフェース
jakarta.servlet.Filter
のdoFilter
- 例外:
IOExceptionSE
jakarta.servlet.ServletException
getAuthenticationEntryPoint
getUserCache
getUserDetailsService
setAuthenticationDetailsSource
public void setAuthenticationDetailsSource(AuthenticationDetailsSource<jakarta.servlet.http.HttpServletRequest, ?> authenticationDetailsSource) setAuthenticationEntryPoint
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource) - 次で指定:
- インターフェース
org.springframework.context.MessageSourceAware
のsetMessageSource
setPasswordAlreadyEncoded
public void setPasswordAlreadyEncoded(boolean passwordAlreadyEncoded) setUserCache
setUserDetailsService
setCreateAuthenticatedToken
public void setCreateAuthenticatedToken(boolean createAuthenticatedToken) このプロパティを設定した場合、 認証と UserDetailsService によってロード権限で満たされて、ダイジェスト認証に成功した後に作成された認証オブジェクトは、マークされます。AuthenticationProvider によって再認証されることはありません。つまり、ユーザーのパスワードのみがチェックされ、isEnabled() や isAccountNonExpired() などのフラグはチェックされません。このフラグを有効にすると、時間を節約できます。そうしないと、UserDetailsService が 2 回呼び出されます。より安全なオプションは、UserDetailsService の周囲にキャッシュを導入することですが、これらのフラグを使用しない場合は、このオプションを安全に有効にすることもできます。- パラメーター:
createAuthenticatedToken
- デフォルトは false
setSecurityContextRepository
認証が成功したときにSecurityContext
を保存するようにSecurityContextRepository
を設定します。デフォルトのアクションは、SecurityContext
を保存しないことです。- パラメーター:
securityContextRepository
- 使用するSecurityContextRepository
。null にはできません。
setSecurityContextHolderStrategy
public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy) 使用するSecurityContextHolderStrategy
を設定します。デフォルトのアクションは、SecurityContextHolder
に格納されているSecurityContextHolderStrategy
を使用することです。- 導入:
- 5.8