2017-08-23 9 views
-2

私はこの問題のトピックがあることを知っていますが、私が作った設定は正しいです、そして、それは正しく動作するプロジェクトとそれを比較しました。 JWTセキュリティのために/ loginエンドポイントを「非セキュア」にしたいのですが、/ loginエンドポイントに到達する前にAuthenticationFilterが実行されています。 なぜ機能していないのか混乱しています。以下は春のセキュリティantMatchersのpermitAllは動作しません

マイコード:

@Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http 
       .csrf().disable() 

       .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() 

       .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() 

       .authorizeRequests() 

       .antMatchers("/login").permitAll() 
       .anyRequest().authenticated(); 

     http 
       .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); 

     http.headers().cacheControl(); 

    } 
+0

[1つの特別なパスWebSecurityConfigurerAdapterにのみフィルタを追加する方法](https://stackoverflow.com/questions/45820372/how-to-add-a-filter-only-for-one-special- path-websecurityconfiguraradapter) – jfneis

答えて

0

重複How to add a filter only for one special path WebSecurityConfigurerAdapter

あなたは、単一のConfigurationクラスであることを行うことはできません。この質問を見てください:How to apply spring security filter only on secured endpoints?

この場合、より良い解決策は複数のHttpSecurityを構成することだと思います。 Spring IO documentationから:

我々は 複数のブロックを持つことができると同じように、複数のHttpSecurityインスタンスを設定することができます。鍵は、 WebSecurityConfigurationAdapterを複数回拡張することです。たとえば、 は、/ api /で始まるURLの の設定が異なる例です。

ドキュメントは、これを達成するために必要な手順と完全例有する:

  • 通常通り

    1. 構成認証をどのWebSecurityConfigurerAdapterのように指定する @Orderが含まWebSecurityConfigurerAdapterのインスタンスを作成します最初に と考えてください。
    2. http.antMatcherはこのHttpSecurity だけWebSecurityConfigurerAdapterの別のインスタンスを/ API/
    3. で始まるURLに適用作成されると述べています。 URLが/ api /で始まらない場合、この設定が使用されます。この の設定は、ApiWebSecurityConfigurationAdapter の後にあると考えられます。これは、@Orderの値が1の後に(@Orderのデフォルトはlastではありません)ためです。

    幸運!

  • +0

    このサンプルプロジェクトを見て、複数の設定を表示するhttps://github.com/szerhusenBC/jwt-spring-security-demo/blob/master/src/main/java/org/zerhusen/config /WebSecurityConfig.java – Bart

    +0

    @Bartこの例では、WebSecurityConfigurerAdapterを継承するクラスは1つだけです。私がリンクしているSpring IOリンクとして2つ以上必要です。それを試しましたか? – jfneis

    関連する問題