У меня есть сервер с зависимостями и конфигурацией, как упоминалось Минимальная конфигурация загрузки OAuth2:
Конфигурация безопасности помечена @EnableResourceServer.
Свойства содержат:
spring:
security:
oauth2:
resource:
token-info-uri: https://token-validation-url/example
Когда я выполняю запрос curl -H "Authorization: xyz" http://localhost:8080/my-endpoint, я получаю 401, но не вижу выполнения HTTP-запроса для проверки токена.
Если я удаляю префикс spring из свойства, я все равно получаю 401, но он пытается использовать HTTP POST для https://token-validation-url/example:
security:
oauth2:
resource:
token-info-uri: https://token-validation-url/example
Если я возьму тот же токен и попробую вручную HTTP GET https://token-validation-url/example?otoken=xyz, он вернет, что он действителен.
Как указать otoken параметр запроса?
Почему сервер пытается проверить токен с помощью HTTP POST вместо HTTP GET?
Я передаю его с Bearer, просто пропустил в примере. Я не думаю, что это создает проблему.




Заметил, что HTTP POST https://token-validation-url/example?otoken=xyz проверяет то же, что и GET, поэтому используется:
security:
oauth2:
resource:
token-info-uri: https://token-validation-url/example
Просто нужно установить имя токена:
@SpringBootApplication
public class ExampleApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(ExampleApplication.class, args);
RemoteTokenServices remoteTokenServices = context.getBean(RemoteTokenServices.class);
remoteTokenServices.setTokenName("otoken");
}
}
Другой способ настройки RemoteTokenServices: Настройка сервера ресурсов с помощью RemoteTokenServices в Spring Security Oauth2
Я не знаю точного примера, но когда я использовал Spring Security, мне нужен был действительный токен, начинающийся с Bearer в заголовке, как описано здесь: stackoverflow.com/questions/33265812/…