2017-04-15 20 views
2

私はSpringには新しく、残りのコントローラの8/10のURLに対して基本認証を有効にする必要があり、もう1つは基本認証なしでアクセスできる必要があります。 私はアプリケーションでビルドするためにgradleを使用していますので、そのようなXMLファイルはありません。 (私はweb.xmlファイルでいくつかの解決策を見て、私は1つを持っていない) ここでは、私のWebセキュリティの設定です:ここで特定のURLの基本認証を無効にするSpring

@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    public void configure(WebSecurity web) throws Exception { 
     super.configure(web); 
     web.ignoring().antMatchers("/abcd/**"); 

    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication().withUser("user").password("password"); 

    } 
} 

は私のコントローラである:

@RestController 
@RequestMapping(value = "/abcd") 
public class PaymentController implements ElasticSearchConstants { 

    @RequestMapping(value = "/sample", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) 
    public static void authExpemtedController(HttpServletRequest request, HttpServletResponse response) throws Exception { 
     //do something 
    } 
} 

私は、Webを試してみました。無視する()。antMatchers( "/ abcd /");役に立たない。 { "タイムスタンプ":1492274727955、 "ステータス":401、 "エラー": "未承認"、 "メッセージ": "これにアクセスするには完全な認証が必要ですリソース」、 『パス』: 『/ ABCD /サンプル』 }

私は他のAPIをauthernticatedする必要があるとして、任意の認証を必要としないこのようなAPIを公開する必要があります。

事前に助けてくれてありがとう

UPDATE:。。 私はhttp.authoriseRequest()antMatchers( "/ ABCD")について知っているpermitAll() このメソッドは、アクセスのみにすべてのユーザーに許可します。私は、このAPIにユーザー情報をまったく渡したくありません。あなたはSection 5.4 Authorize Requests of the Spring Security docsを参照したい場合があります

答えて

2

私たちの例は、単に認証されると、我々のアプリケーション内のすべてのURLのためになるよう行っているユーザーを必要としています。 URLのカスタム要件を指定するには、http.authorizeRequests()メソッドに複数の子を追加します。例:

protected void configure(HttpSecurity http) throws Exception { 
    http 
     .authorizeRequests()                      
      .antMatchers("/resources/**", "/signup", "/about").permitAll()         
      .antMatchers("/admin/**").hasRole("ADMIN")             
      .antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")       
      .anyRequest().authenticated() 
      .and() 
     // ... 
     .formLogin(); 
} 
+0

私はすでにこのオプションを試していましたが、動作しませんでした。まだ同じ問題が発生しています。 。私は、http \t .authorizeRequests() \t .antMatchers( "**// ABCD")permitAll() \t \t .anyRequestを()与えている(認証済み)。 – Gaurav

関連する問題