Я пытаюсь аутентифицировать вызовы API с помощью моего бэкэнда с весенней загрузкой, предоставляя ему токен доступа, полученный от Google.
Из того, что я понимаю в документации, этого должно быть достаточно, чтобыпросто объявите
security.oauth2.resource.jwk.key-set-uri=https://www.googleapis.com/oauth2/v3/certs
в файле application.properties
вместе с включением сервера ресурсов и веб-безопасности.
Маркер отправляется в заголовке в форме
'Authorization': 'Bearer ya29.ImCQBz5-600zVNsB[...]ka-x5kC[...]hvw-BGf3m5Bck-HF[...]44'
Когда я пытаюсь аутентифицироваться, я получаю 401 Несанкционированную ошибку со следующей консольной ошибкой:
OAuth2AuthenticationProcessingFilter: Authentication request failed: error="invalid_token", error_description="An I/O error occurred while reading the JWT: Invalid UTF-8 start byte 0xad at [Source: (byte[])"??"; line: 1, column: 3]
Я надеюсь использовать большую часть того, что я могу, из библиотек безопасности Spring, но япопытался написать свои собственные простые bean-компоненты для управления токенами.
@Configuration
@EnableResourceServer
@EnableWebSecurity
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().hasRole("USER");
}
@Bean
public TokenStore tokenStore() {
return new jwkTokenStore("https://www.googleapis.com/oauth2/v3/certs");
}
@Bean
@Primary
public DefaultTokenServices tokenServices() {
DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore());
return defaultTokenServices;
}
@Override
public void configure(ResourceServerSecurityConfigurer config) {
config.tokenServices(tokenServices());
}
}
Я ожидаю аутентификации токена и возможности отображения информации.
Нужно ли мне писать свои собственные функции для обработки этого