クラス DigestAuthenticationFilter
- java.lang.Object
-
- org.springframework.web.filter.GenericFilterBean
-
- org.springframework.security.web.authentication.www.DigestAuthenticationFilter
- 実装されたすべてのインターフェース:
javax.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
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 protected org.springframework.context.support.MessageSourceAccessor
messages
コンストラクターのサマリー
コンストラクター コンストラクター 説明 DigestAuthenticationFilter()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
afterPropertiesSet()
void
doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)
protected DigestAuthenticationEntryPoint
getAuthenticationEntryPoint()
UserCache
getUserCache()
UserDetailsService
getUserDetailsService()
void
setAuthenticationDetailsSource(AuthenticationDetailsSource<javax.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
setSecurityContextRepository(SecurityContextRepository securityContextRepository)
認証が成功したときにSecurityContext
を保存するようにSecurityContextRepository
を設定します。void
setUserCache(UserCache userCache)
void
setUserDetailsService(UserDetailsService userDetailsService)
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()
- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
org.springframework.web.filter.GenericFilterBean
のafterPropertiesSet
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.Filter
のdoFilter
- 例外:
java.io.IOException
javax.servlet.ServletException
getAuthenticationEntryPoint
protected final DigestAuthenticationEntryPoint getAuthenticationEntryPoint()
getUserCache
public UserCache getUserCache()
getUserDetailsService
public UserDetailsService getUserDetailsService()
setAuthenticationDetailsSource
public void setAuthenticationDetailsSource(AuthenticationDetailsSource<javax.servlet.http.HttpServletRequest,?> authenticationDetailsSource)
setAuthenticationEntryPoint
public void setAuthenticationEntryPoint(DigestAuthenticationEntryPoint authenticationEntryPoint)
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource)
- 次で指定:
- インターフェース
org.springframework.context.MessageSourceAware
のsetMessageSource
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 にはできません。