Spring Security Web AppliationのSecurity Filter Chin

3650 ワード

Security Filter Chin
Spring SecurityのWebモジュールは、Web開発に非常に包括的なサポートを提供しています.全体のスプリングsecurity webモジュールは、Servlet Filterをベースに構築されています.このモジュールは、要求がブラウザから送信されるか、ウェブクライアントから送信されるか、またはajaxアプリケーションから送信されるかに関わらず、HttpServletResonseオブジェクトを処理します.
Spring Security内部はフィルタチェーンを維持しています.構成情報に基づいて、フィルタチェーン内のフィルタを自動的に管理します.フィルタチェーンの中のフィルタの呼び出し順序は非常に重要です.彼らの間には一定の依存関係があります.
Filter ChinProxy
FilterChanProxyはFilter Charinを配置するツール類で、例を挙げます.
<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<constructor-arg>
    <list>
    <sec:filter-chain pattern="/restful/**" filters="
        securityContextPersistenceFilterWithASCFalse,
        basicAuthenticationFilter,
        exceptionTranslationFilter,
        filterSecurityInterceptor" />
    <sec:filter-chain pattern="/**" filters="
        securityContextPersistenceFilterWithASCTrue,
        formLoginFilter,
        exceptionTranslationFilter,
        filterSecurityInterceptor" />
    list>
constructor-arg>
bean>
Filter Ordering
どのフィルターを使っても、フィルタチェーンの順序は以下の通りです.
  • ChanelProcessigFilter:異なるプロトコルチャネル、httpまたはhttps
  • にリダイレクトする.
  • SecurityConttext Persistence Filter:最初にSecurityContectオブジェクトを作成してSecurityContact Holderにセットしてください.要求が終わったら、SecurityConteextをHttpSessionにコピーして、次の要求に直接HttpSessionのSecurityContit 24を取ってください.
  • ConccurrentSession Filter:彼はSecurityConttext Holderの関数を使ってSecurityConttext Holderを取得するので、Security Contact Persistext Filterの後ろに置く;
  • UsernamePassword Authentication Filter、Cas Authentication Filter、BaicAuthentication Filter:具体的な認証機構フィルタ;SecurityContect Holderの情報を認証サーバから交換して認証したAuthentication
  • SecurityContect HolderAwarequest Filter:容器のHttpServlet Request WrapperオブジェクトにSpring Securityの関連情報を充填する.
  • JaasApple Integration Filter:
  • Remember MeAuthenticationFilter:もしこれまで認証処理機構がなかったらSecurityConttext Holderを更新し、かつrequestオブジェクトがremember-meサービス有効cookieの識別を提供したら、認証の仕組みによってSecurityContholderに一つの関連するAuthenticationを配置します.例えばCas Authentication TokenやUsernamePassword Authentication Tokenなどです.
  • AnonymousAuthentication Filter:もしこれまで認証処理機構がなかったらSecurityContact Holderを更新し、SecurityContact Holderの中にAuthenticationオブジェクト
  • を配置する.
  • Exception Translation Filter:spring security認証過程で投げられたエラーを処理します.Authentication ExceptionまたはAccess DenieExceptionの各サブクラス.
  • Filter SecurityInterceptor:web urlアドレスを保護して、Access DeniedExceptionエラーを収集して、publishEventは外に出ます.
  • Request Match ing and Http Firewall
    穴、代記して、公式サイトの文書を見て、この部分はurlマッチング機能の設計構想を詳しく説明しました.HttpFirewallは潜在的な危険要求を拒否するために使用されます.spring securityはそれを包装します.開発者はこの包装後の要求をさらに処理するかどうかを選択できます.Http FirewallはRequestがフィルタチェーンに入る前に処理します.