Spring Oauth2 + Spring Security

Estou desenvolvendo uma aplicação que tem uma interface web, e uma camada Rest, essa camada Rest vai usar Oauth2, e o restante, vai se autenticar usando um formulário de login e senha.

O problema, é que a configuração de Security do spring esta sobrescrevendo minhas configurações do ResourceServer, eu consigo autenticar normalmente no AuthorizationServer, mas quando tento acessar alguma url Rest com o token gerado, ele me redireciona para o formulário de login.

Depois de pesquisar muito eu consegui fazer com que não redirecionasse mais para o formulário, mas ele não autentica com o Token, e retorna erro 403.

É possível manter as duas formas de autenticação, e filtrar por url qual vai se autenticar via token, e qual vai se autenticar através do formulário de login?

Segue abaixo minha configuração de segurança.

[code]@Configuration
@EnableAuthorizationServer
@EnableWebSecurity
public class OAuth2Config extends AuthorizationServerConfigurerAdapter {
private static final String RESOURCE_ID = “resource_id”;
@Autowired
private CustomUserDetailsService userDetailsService;

@Autowired
private AuthenticationManager authenticationManager;

@Value("${oauth.tokenTimeout:3600}")
private int expiration;

@Bean
public PasswordEncoder passwordEncoder() {
	return new BCryptPasswordEncoder();
}

@Override
public void configure(AuthorizationServerEndpointsConfigurer configurer) throws Exception {
	configurer.authenticationManager(authenticationManager);
	configurer.userDetailsService(userDetailsService);
}

@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
	oauthServer.allowFormAuthenticationForClients(); // Disable /oauth/token Http Basic Auth
	oauthServer.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
}	

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
	clients
		.inMemory()
		.withClient("client_id")
		.authorizedGrantTypes("password", "refresh_token")
		.authorities("ADMIN")
		.scopes("read", "write")
		.resourceIds(RESOURCE_ID)
		.secret("senha")
		.accessTokenValiditySeconds(expiration);
}

}

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{

@Configuration
@Order(1)
public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable() 
        .antMatcher("/api/**")
        .authorizeRequests()
        .anyRequest().hasAnyRole("ADMIN", "USER", "AGENTE")
        .antMatchers("/api/**").fullyAuthenticated()
        .and()
        .httpBasic().disable();
    }
}

@Configuration
@Order(2)
public static class FormWebSecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    @Bean
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
		web.ignoring().antMatchers("/static/**");
		web.ignoring().antMatchers("/webjars/**");
		web.ignoring().antMatchers("/upload/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //Permissões
  		http
  		.authorizeRequests()
  		.antMatchers("/usuario/**").hasRole("ADMIN")
  		.antMatchers("/relatorio/**").hasAnyRole("ADMIN","USER")
  		.anyRequest().authenticated();
        
		//Login
		http.formLogin()
		.loginPage("/login")
		.permitAll()
		.defaultSuccessUrl("/", false)
		.failureUrl("/error-login")
		.usernameParameter("login")
		.passwordParameter("password");
		
		//Logout
		http.logout()
		.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
		.logoutSuccessUrl("/login")
		.permitAll();
				
		//Remenber-me
		http.rememberMe()
		.tokenValiditySeconds(1209600);
    }
}

}

@EnableResourceServer
@Configuration
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter{
private static final String RESOURCE_ID = “floricultura-service”;

@Autowired
private JsonToUrlEncodedAuthenticationFilter jsonFilter;

@Override
public void configure(ResourceServerSecurityConfigurer resources) {
    resources.resourceId(RESOURCE_ID).stateless(false);
}

@Override
public void configure(HttpSecurity http) throws Exception {
	http.addFilterBefore(jsonFilter, ChannelProcessingFilter.class)
	.requestMatchers().antMatchers("/api/**")
    .and().authorizeRequests().anyRequest().authenticated();

	http.headers().contentTypeOptions().disable();
}

}
[/code]