2016-12-13 15 views
-1

私は十数種類の設定を試しましたが、私が試みているユースケースを実行するためにSpring Securityを取得することはできません。 私はセキュリティが指定されたURLに次Spring Securityコンフィグレーションで特定のURLの認証をスキップしない

  1. 基本認証を使用(/ API /サービス/ **)

  2. 他のすべてのURLの

  3. で送信された場合は基本認証を検証しないでくださいをしたいです

現在のところ、/ api/service/**以外のURLにリクエストを送信するときは、基本認証トークンを送信して認証しようとすると、それはうまく動作します。私はトークンが他のすべてのURLのために完全に無視されることを望んでいません。それを行う方法はありますか?

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
     .csrf().disable() 
     .authorizeRequests().antMatchers("/api/service/**").hasRole("ROLE_SERVICE") 
     .and() 
      .httpBasic().authenticationEntryPoint(authenticationEntryPoint) 
     .and() 
      .exceptionHandling().accessDeniedHandler(new RestAccessDeniedHandler()) 
     .and() 
      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 
} 

私も.authorizeRequests().antMatchers("**").anonymous().authorizeRequests().antMatchers("**").permitAll()を追加しようとしたが、これらのいずれもトリックを行っています。また、.httpBasic()を削除しようとしましたが、検証は行われませんでした。

ご協力いただければ幸いです。

使用方法:Springセキュリティ3.2.9.RELEASEおよびSpring MVC 3.2.13.RELEASE。

+0

ので、あなたが認証を必要としない、それはとにかく認証しようとしたURLに認証ヘッダでリクエストを送信するとき? – Reek

+0

正しいですが、私は奇妙なユースケースのように聞こえますが、APIのほとんどは完全にオープンしているので、他のものがヘッダーに異なる認証を追加するかどうかを制御できないため、特定のものでのみ認証できるようにしたい。 編集:無効な基本認証トークンを指定した場合は、それが悪いときです。/api/service/**のために正しく検証される基本認証トークンを他のAPIに提供すると、(それはSpring Securityを通じて認証されるので)動作します。 – Craig

答えて

-1

使用この

.authorizeRequests() 
     .antMatchers("/api/service/**").hasRole("ROLE_SERVICE") 
     .anyRequest().permitAll() 
+0

これで、基本認証は/ api/services/**の呼び出しでも検証されることはありません。 – Craig

+0

許可の順番は重要です。 hasRole( "ROLE_SERVICE") ' –

+0

また、'/api/service/** 'を持っていますか? '.anyRequest()。permitAll() ** 'または'/api/services/** 'となります。あなたの質問には 'service'しかありません。コメントに' services'と書いてあります。 –

関連する問題