2017-10-02 6 views
0

適切な "Content-Type"を持たないすべてのリクエストを拒否するようにwebappを設定したいと思います。たとえば、「application/json」以外のすべてのコンテンツタイプを拒否する必要があります。SpringSecurity - RequestHeaderRequestMatcher

現在、私はカスタムフィルタでそれをやっていますが、セキュリティコンフィグレーションで "RequestHeaderRequestMatcher"を使って直接行うことができますか?私は、有効なコンテンツタイプのすべての要求を確認するために、新しい要求マッチャを追加する必要がありますどのように

EnableWebSecurity 
class SecurityConfig : WebSecurityConfigurerAdapter() { 

    override fun configure(http: HttpSecurity) { 
     http.authorizeRequests() 
       .requestMatchers(matcher) 
       .denyAll() 
       .antMatchers("/css/**", "/index") 
       .permitAll() 
       .antMatchers("/user/**") 
       .hasRole("USER") 

     http.formLogin() 
       .loginPage("/login") 
       .failureUrl("/login-error") 
    } 
} 

は、次の例のセキュリティ設定を取ることができますか?

答えて

0

は、このドキュメントCORSに見ることができ、この答えは、あなたがhttps://stackoverflow.com/a/43559288/5429215

+0

関連性は低いです。問題は、ヘッダー(コンテンツタイプ)の値であり、許可されたヘッダーではありません。 – mhshams

0

一つの要求は、特定のヘッダーが含まれていることを確認するためにRequestHeaderRequestMatcherを使用することができますすることができます。さらに、特定の値に対してもテストするために、より正確なテストを行うことができます。

すべてのリクエストには、 -Headerの値がapplication/jsonである必要があります。それ以外の場合は、HTTP-Status 406が返されます。

@Configuration 
class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.requestMatcher(new RequestHeaderRequestMatcher("Accept", "application/json")); 
    } 
} 
関連する問題