Spring Securityフィルターチェーンのカスタムフィルター
1. 概要
この簡単な記事では、SpringSecurityフィルターチェーン用のカスタムフィルターの作成に焦点を当てます。
参考文献:
Spring Security – @PreFilterおよび@PostFilter
実際の例を使用して、@ PreFilterおよび@PostFilter Spring Securityアノテーションの使用方法を学びます。
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);
}
}
可能な方法がいくつかあります。
-
addFilterBefore(filter, class) –は、指定されたフィルターの位置の前にfilterを追加しますclass
-
addFilterAfter(filter, class) –指定されたフィルターの位置の後にfilterを追加しますclass
-
addFilterAt(filter, class) –指定されたフィルターclassの場所にfilterを追加します
-
addFilter(filter) – Spring Securityが提供するフィルターのインスタンスであるか拡張する必要があるfilterを追加します
3.2. XML構成
custom-filterタグとthese namesの1つを使用してフィルターをチェーンに追加し、フィルターの位置を指定できます。 たとえば、after属性で指摘できます。
スタック内のフィルターの場所を正確に指定するすべての属性は次のとおりです。
-
after –カスタムフィルターがチェーンに配置される直後のフィルターについて説明します
-
before –フィルターをチェーンに配置する前のフィルターを定義します
-
position –明示的な位置にある標準フィルターをカスタムフィルターに置き換えることができます
4. 結論
この簡単な記事では、カスタムフィルターを作成し、それをSpring Securityフィルターチェーンに接続しました。
いつものように、すべてのコード例はsample Github projectで利用できます。