Использование OAuth2WebSecurityExpressionHandler в конфигурации безопасности создает anonymousUser - PullRequest
0 голосов
/ 04 мая 2020

Я пытался проверить, имеет ли клиент / пользователь 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. Мне все еще интересно, как я могу получить правильный экземпляр, особенно если используемый токен является действительным токеном.

...