Я пытался проверить, имеет ли клиент / пользователь oauth следующие полномочия. В настоящее время в моей конфигурации безопасности у меня есть такая настройка:
@Configuration
@Order(1)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler;
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/**").access("#oauth2.clientHasAnyRole('ROLE_USER')")
.expressionHandler(oAuth2WebSecurityExpressionHandler);
}
@Bean
@Order(0)
public RequestContextListener requestContextListener() {
return new RequestContextListener();
}
@Bean
public OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler(ApplicationContext applicationContext) {
OAuth2WebSecurityExpressionHandler expressionHandler = new OAuth2WebSecurityExpressionHandler();
expressionHandler.setApplicationContext(applicationContext);
return expressionHandler;
}
}
Выражение oauth может быть правильно оценено, но я получаю ошибку 403. При отладке объект аутентификации всегда является экземпляром AnonymousAuthenticationToken, а не OAuth2Authentication. Мне все еще интересно, как я могу получить правильный экземпляр, особенно если используемый токен является действительным токеном.