Безопасность Spring / Приложение в приложение / Носитель JWT

Я работаю над защитой конечных точек "WebFlux" моего приложения с помощью Spring Security 5.1.1.RELEASE. Я бы хотел добиться следующего сценария:

  • Сервер аутентификации: я использую Keycloak в качестве сервера аутентификации.
  • Сервер ресурсов: я использую пакет spring-security-oauth2-resource-server для обеспечения аутентификации JWT на определенных путях.
  • Клиент: мне нужно использовать аутентификацию OAuth2 на основе "учетных данных клиента".

Когда я использую curl, это довольно просто:

  • Запросить новый токен с моего сервера аутентификации, используя конечную точку "токен" и тип предоставления "client_credentials"
  • Извлеките access_token из ответа JSON.
  • Используйте JWT в -H "Authorization: Bearer $JWT" опции curl, чтобы встроить токен в мой запрос

Теперь я хочу выполнить инъекции Spring, чтобы использовать bean-компонент WebClient, настроенный для автоматического запроса токена JWT, а затем использовать его для доступа к защищенной конечной точке моего приложения.

Я попытался реализовать пример, показанный в документации Spring Security - WebClient, но безуспешно.

Я ищу пример проверки подлинности приложения для приложения. Один из них - это сервер ресурсов, а другой - клиент, подключающийся к API WebFlux с помощью WebClient.


person Florent Gornes    schedule 27.11.2018    source источник


Ответы (1)


Мне, наконец, удалось реализовать процесс аутентификации OAuth2 с использованием библиотек Spring Security OAuth2 (клиент и сервер-ресурс) для межмашинного сценария.

Источники демонстрации и некоторые пояснения можно найти по этой ссылке: https://github.com/Brico87/spring-security-oauth2-m2m.

Spring Security с поддержкой OAuth2 довольно быстро и эффективно использовать, если вам удастся найти хорошую комбинацию между экземплярами компонентов!

person Florent Gornes    schedule 02.12.2018