Spring ресурсный сервер авторизации с двумя разными серверами авторизации, теряет основной - PullRequest
0 голосов
/ 14 апреля 2020

В моем устаревшем проекте время до этого использовался сервер авторизации. Сервер является обязательным для использования некоторыми службами области.

Сейчас я разрабатываю новый клиент \ пользовательский сервис - сервер ресурсов ( RS ). Сервер ресурсов должен быть интегрирован с apigee для поддержки внешних клиентов. Интеграция безопасности реализована через OAuth2-JWT . Почти все необходимые элементы были использованы из коробки решений Spring Security.

Следующим шагом является добавление SSO-авторизации для внутренних пользователей. Сервер авторизации SSO является устаревшим внутренним сервером безопасности. Я могу обработать все необходимые запросы к серверу единого входа, чтобы получить необходимые данные пользователя и создать принципал, заключенный в UsernamePasswordAuthentificationToken, регистрируя один в контексте сеанса безопасности для этого. Ожидается, что все дополнительные запросы будут успешно обработаны с использованием authorities, указанного в UsernamePasswordAuthentificationToken, но контекст безопасности пуст. В случае, если без настройки ресурсного сервера с безопасностью apigee, он работает нормально.

Учитывая это, давайте проверим фильтры, используемые в потоке (не все, но наиболее интересные для нас): - SecurityContextPersistenceFilter; - OAuth2AuthentificationProcessingFilter - добавляет OAuth2Authentication объект в контекст безопасности; - CustomSsoFilter - добавляет UsernamePasswordAuthentificationToken объект в контекст безопасности; - AnonimousAuthentificationFilter - в случае отсутствия объекта аутентификации в контексте безопасности он добавляет анонимный.

Я обнаружил, что SecurityContextPersistenceFilter очищает контекст безопасности в конечном блоке. Также OAuth2AuthentificationProcessingFilter очищает контекст безопасности Spring в случае, если сеанс не имеет состояния и токен авторизации отсутствует.

Во-первых, моей идеей было настроить CustomOAuth2AuthentificationProcessingFilter и, возможно, CustomAuthentificationManager для подавления отрицательного эффекта OAuth2AuthentificationProcessingFilter, но в этом Способ 2 проблемы для меня: я не знаю, как удалить фильтр из коробки потока.

Вопросы (2 вопроса, но требуется ответ на любой из них):

  1. Как контроль удаляет некоторые фильтры из потока безопасности (обеспечивается автоматической настройкой весенней загрузки) - это помогает закрыть вопрос, следуя моему уродливому пути ...
  2. Как настроить 2 различные цепочки ответов веб-фильтров для каждого потока безопасности (SSO & OAUTH) на том же сервере ресурсов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...