Сервер ресурсов Spring Boot проверяет токен с помощью HTTP POST вместо HTTP GET

У меня есть сервер с зависимостями и конфигурацией, как упоминалось Минимальная конфигурация загрузки OAuth2:

  • весна-безопасность-oauth2
  • весна-безопасность-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?

Я не знаю точного примера, но когда я использовал Spring Security, мне нужен был действительный токен, начинающийся с Bearer в заголовке, как описано здесь: stackoverflow.com/questions/33265812/…

Szigyártó Mihály 15.04.2019 23:49

Я передаю его с Bearer, просто пропустил в примере. Я не думаю, что это создает проблему.

Justinas Jakavonis 15.04.2019 23:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
456
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Заметил, что 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

Другие вопросы по теме