Несколько поставщиков аутентификации для oauth2

Я использую Spring Security для аутентификации OAuth2 с запросом имени пользователя и пароля, как при использовании в обычном потоке. Однако я хочу добавить еще один метод аутентификации с тем же OAuth, но с другими параметрами в запросе. (например, id и clientToken — есть аутентификация, которая выполняется до того, как она дойдет до моего сервиса). В конце, когда оба типа запросов поступают в мою службу аутентификации, она должна возвращать токен oauth, который дополнительно улучшен. Возможно ли иметь 2 разных провайдера аутентификации по URL-адресу конечной точки oauth?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
0
526
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

На самом деле в spring oauth2 есть следующая строка кода TokenEndpoint:

OAuth2AccessToken token = this.getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);

Итак, Spring использует абстракцию TokenGranter для предоставления токенов. Когда вы ищете конкретную реализацию, например, ResourceOwnerPasswordTokenGranter, вы можете заметить, что она использует AuthentiacionManager, что соответствует AuthenticationProviders.

Так что ответ да - можно.

спасибо, что указали мне в правильном направлении. Ваши комментарии заставили меня продолжить поиск и найти stackoverflow.com/questions/25264358/…, и я смог найти реализацию.

dondragon2 30.05.2019 18:12

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

Логика выхода не работает с базовой аутентификацией
Как добавить один и тот же параметр для нескольких идентичных страниц входа, если аутентификация не удалась?
Как сделать для авторизации конечных точек для анонимного пользователя с помощью весенней безопасности
Почему я не могу отключить автоматически сгенерированный пароль и пользователя весенней загрузки?
Сохраняйте имя пользователя в базе данных при выполнении вызовов API для отдыха или мыла из приложения A в приложение B в Java Spring 4
Как выйти из системы с запросом GET в SpringBoot WebFlux
LDAP: получение пользовательских значений во время события аутентификации
Инициализировать репозитории, защищенные аутентификацией Spring
Нужно ли помещать исходные учетные данные в UsernamePasswordAuthenticationToken после успешной аутентификации в AuthenticationProvider?
«AlreadyBuiltException: этот объект уже был построен» при построении «springSecurityFilterChain»