2017-09-03 12 views
0

私は春oAuth2を使用している春のブートアプリケーションを完璧に動作させています。メインクラスで@EnableResourceServerを使用するとうまくいきました。 しかし私は、そのクラスを追加した後、要求がOAuthのトーク​​ンを検証しないと思われるクラスWebSecurityConfigurerAdapterはEnableResourceServerをオーバーライドしますか?

@Configuration 
    public class CorsConfiguration extends WebSecurityConfigurerAdapter { 
     @Override 
     protected void configure(HttpSecurity http) throws Exception { 

      http.csrf().disable(); 
      http.cors(); 

     } 
     @Bean 
     public CorsConfigurationSource corsConfigurationSource() { 
      final org.springframework.web.cors.CorsConfiguration configuration = new org.springframework.web.cors.CorsConfiguration(); 
      configuration.setAllowedOrigins(ImmutableList.of("*")); 
      configuration.setAllowedMethods(ImmutableList.of("HEAD", 
        "GET", "POST", "PUT", "DELETE", "PATCH")); 
      configuration.setAllowCredentials(true); 
    configuration.setAllowedHeaders(ImmutableList.of("Authorization", "Cache-Control", "Content-Type")); 
      final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 
      source.registerCorsConfiguration("/**", configuration); 
      return source; 
     } 
    } 

以下で実装したサービスのためのCORSを有効にします。 oAuthトークンがなくても、任意の要求はサービスにアクセスできます。私が間違っていた何

? 私は両方を使用していますか?両方とも仕事をする特別なことはありますか? これをCORSで有効にする方法はありますか。

答えて

1

私はあなたが私はあなたの問題はあなたがAUTHORIZEのOAuthにあなたの電話を転送していないと思いWebSecurityConfigurerAdapter を使用していた理由はわからない(私は@CrossOrigin注釈それが働いていなかったを試してみました)。あなたは

同様の方法で、この

@Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
     clients.inMemory().withClient("clinet").secret("secret").accessTokenValiditySeconds(3600).scopes("read", "write") 
       .authorizedGrantTypes("password", "refresh_token").resourceIds("resource"); 
    } 
のようなあなたのOAuthサーバーで使用しているリソースである必要があり、それはここで私

@Configuration 
public class CorsConfiguration extends ResourceServerConfigurerAdapter { 


    @Override 
    public void configure(HttpSecurity http) throws Exception { 
     http.cors().and().csrf().disable().authorizeRequests().anyRequest().authenticated(); 
    } 
    @Bean 
    public CorsFilter corsFilter() { 
     final org.springframework.web.cors.CorsConfiguration configuration = new org.springframework.web.cors.CorsConfiguration(); 
     configuration.setAllowedOrigins(ImmutableList.of("*")); 
     configuration.setAllowedMethods(ImmutableList.of("HEAD", 
       "GET", "POST", "PUT", "DELETE", "PATCH")); 
     configuration.setAllowCredentials(true); 

     configuration.setAllowedHeaders(ImmutableList.of("Authorization", "Cache-Control", "Content-Type")); 
     final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 
     source.registerCorsConfiguration("/**", configuration); 
     return new CorsFilter(source); 
    } 
    @Override 
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception { 
     resources.resourceId("resource"); 
    } 

} 

このresources.resourceId("resource");のために働いて、これを試してください

関連する問題