私はspring-security core v4.1.1.RELEASEを使用するspring-bootアプリケーション(spring-boot v1.3.3.RELEASE)を持っています。Spring Securityはフィルタの自動注入を行いますか?
私がOncePerRequestFilter
またはGenericFilterBean
を拡張してカスタムフィルタBeanを作る場合、私のフィルタが自動的に関わらず、私はカスタムにconfigure()
に渡されたHttpSecurity
オブジェクトにaddFilter()
を呼び出すかどうかの、フィルタチェインに追加されるようですWebSecurityConfigurerAdapter
クラス。ここで
は、カスタムフィルタコードである:ここで
@Component
public class CustomFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws ServletException, IOException {
// custom filter code here
}
}
は省略セキュリティの設定コードです:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
// not adding the custom filter here
http.authorizeRequests()
.antMatchers("/api/login/**").permitAll()
.anyRequest().authenticated();
}
}
私が観察していると、すべての要求が、でも/api/login
に、CustomFilter
を通過するということです私はそれをどこでもフィルターチェーンに追加しませんでしたが、 @Configuration
または@Bean
注釈なしでCustomFilter
と宣言すると、明示的にそれをSecurityConfiguration
クラスに通知しない限り、フィルタチェーンに追加されません。
私の質問:これは意図した動作ですか?もしそうなら、なぜですか?フィルターチェーンにフィルターを自動的に追加するのは危険です。より良い単語がないため、各要求はSecurityConfiguration
で指定した内容に関係なくフィルターを通過します。
理にかなっていること、説明するためのおかげで。これが文書化されているかどうか知っていますか?私は少しの検索を行い、カスタムフィルターBeanがメインサーブレットフィルターチェーンに自動的に追加されることを示すソースを見つけることができませんでした。 – Steven