bugfix> java > 投稿

空の WebSecurityConfigurerAdapter の単なる存在私のアプリのOAuth2を台無しにします。 私は得る

$ curl -i -X POST -H "Content-Type: application/json" -H "Authorization: Bearer 27f9e2b7-4441-4c03-acdb-7e7dc358f783" -d '{"apiKey": "key", "tag": "tag"}' localhost:8080/isTagAvailable
HTTP/1.1 302
Location: http://localhost:8080/error

期待するとき

$ curl -i -X POST -H "Content-Type: application/json" -H "Authorization: Bearer 27f9e2b7-4441-4c03-acdb-7e7dc358f783" -d '{"apiKey": "key", "tag": "tag"}' localhost:8080/isTagAvailable
HTTP/1.1 401
{"error":"invalid_token","error_description":"Invalid access token: 27f9e2b7-4441-4c03-acdb-7e7dc358f783"}

私はコメントアウトする必要があります全部 Oauth2が機能するためのクラス。 configure にコメントするだけでもメソッドが機能しません。どうして?

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/robots.txt").permitAll()
        .and()
            .authorizeRequests()
            .antMatchers("/isTagAvailable").hasRole("USER")
//          .anyRequest().authenticated()
        .and()
            .httpBasic().disable();
    }
}

セキュリティログを追加する方法を学びました、 だが有用な情報を出力しませんでした。

回答 1 件
  • 私は @EnableWebSecurity を捨てました  および WebSecurityConfigurerAdapter  これはアプリを完全に破壊します。彼らは HttpSecurity にアクセスするために必要だと思った  必要だと思った。この単純な新しいクラスが問題を解決することを発見しました。

    @Configuration
    @EnableResourceServer
    public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
        String[] ignoredPaths = new String[]{...};
        @Override
        public void configure(HttpSecurity http) throws Exception{
            http.authorizeRequests()
                .antMatchers(ignoredPaths).permitAll()
                .anyRequest().authenticated()
            .and()
                .httpBasic();   
        }
    
    

あなたの答え