2017-03-17 14 views
0

私は春のブートプロジェクトでbasicAuthを使用しています。SpringBoot基本認証.wsdlで終わるURLを無視する

サービスURLを認証する必要がありますが、WSDLでは認証が不要である必要があります。

認証済みのすべての&を無視したURLをapplication.ymlファイルに保存したいと考えています。

ような何か:コードの上

auth.authenticated: /onlineshop/v1/ecart,/onlineshop/v1/wishlist 
auth.ignored: /onlineshop/v1/ecart.wsdl,/onlineshop/v1/wishlist.wsdl 


@EnableWebSecurity 
@Configuration 
class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Value("${auth.authenticated}") 
    String[] allAuthenticated; 

    @Value("${auth.ignored}") 
    String[] allIgnored; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     // Something like 
     for (String ignored: allIgnored) { 
      http.authorizeRequests().antMatchers(ignored).permitAll(); 
     } 

     // Something like 
     for (String authenticated: allAuthenticated) { 
      http.authorizeRequests().antMatchers(authenticated).authenticated(); 
     } 
     .... 
    } 

} 

は草稿(そのために残念)ですが、私はこれらの線に沿ってコーディングしようとしましたが、それは動作しません。

これは何らかの認証を適用していません。

どうすればこの作業を行うことができますかをお勧めします。

はまた、代わりの.wsdlを終了選択URLを無視しての、どのように私はの.wsdl

で終わるすべてのURLを無視することができ、すべての

答えて

2

まずありがとうございました、私はあなたが認証されていない可能にするためのホワイトリストのアプローチを行うべきだと考えアクセスします。そのため、私はallAuthenticatedパラメータを削除し、すべてのURLに対してallIgnoredパラメータにない認証を要求しました。これは設計上より安全です。

以下の設定では、必要な機能で十分です。 antMatchers()String[]を必要とするので、あなたはループを自分で繰り返し処理する必要がないこと

@EnableWebSecurity 
@Configuration 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Value("${auth.ignored}") 
    private String[] allIgnored; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests() 
      .antMatchers(allIgnored).permitAll() 
      .anyRequest().authenticated() 
      .and() 
      .httpBasic(); 
    } 

} 

は注意してください。

allAuthenticatedで設定したい場合は、設定に.antMatchers(allAuthenticated).authenticated()を追加するだけです。

+0

あなたが私が答えに入れたのと同じコメントをくれたことをちょうど見ました。これを補うことができます;-) – GhostCat

関連する問題