Spring Securityフィルタチェーンのカスタムフィルタ

Spring Securityフィルターチェーンのカスタムフィルター

1. 概要

この簡単な記事では、SpringSecurityフィルターチェーン用のカスタムフィルターの作成に焦点を当てます。

参考文献:

Spring Security – @PreFilterおよび@PostFilter

実際の例を使用して、@ PreFilterおよび@PostFilter Spring Securityアノテーションの使用方法を学びます。

Spring SecurityのJava Configの概要

Spring SecurityのJava Configの迅速で実用的なガイド

スプリングブートセキュリティの自動構成

SpringBootのデフォルトのSpringSecurity構成に関する迅速で実用的なガイド。

2. フィルタの作成

Spring Securityはデフォルトで多数のフィルターを提供しますが、ほとんどの場合、これらで十分です。

ただし、もちろん、チェーンで使用する新しいフィルターを作成して、新しい機能を実装する必要がある場合もあります。

org.springframework.web.filter.GenericFilterBean.を実装することから始めます

GenericFilterBeanは、Springに対応した単純なjavax.servlet.Filter実装実装です。

実装について-単一のメソッドを実装するだけです。

public class CustomFilter extends GenericFilterBean {

    @Override
    public void doFilter(
      ServletRequest request,
      ServletResponse response,
      FilterChain chain) throws IOException, ServletException {
        chain.doFilter(request, response);
    }
}

3. SecurityConfigでのフィルターの使用

フィルタをSpringSecurity構成に接続するには、XML構成またはJava構成のいずれかを自由に選択できます。

3.1. Java設定

WebSecurityConfigurerAdapterからconfigureメソッドをプログラムでオーバーライドするフィルターを登録できます。 たとえば、HttpSecurityインスタンスのaddFilterAfterメソッドで機能します。

@Configuration
public class CustomWebSecurityConfigurerAdapter
  extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.addFilterAfter(
          new CustomFilter(), BasicAuthenticationFilter.class);
    }
}

可能な方法がいくつかあります。

3.2. XML構成

custom-filterタグとthese namesの1つを使用してフィルターをチェーンに追加し、フィルターの位置を指定できます。 たとえば、after属性で指摘できます。


    


スタック内のフィルターの場所を正確に指定するすべての属性は次のとおりです。

  • after –カスタムフィルターがチェーンに配置される直後のフィルターについて説明します

  • before –フィルターをチェーンに配置する前のフィルターを定義します

  • position –明示的な位置にある標準フィルターをカスタムフィルターに置き換えることができます

4. 結論

この簡単な記事では、カスタムフィルターを作成し、それをSpring Securityフィルターチェーンに接続しました。

いつものように、すべてのコード例はsample Github projectで利用できます。