Как реализовать JWT с Keycloak в микросервисной загрузочной архитектуре Spring? - PullRequest
0 голосов
/ 21 февраля 2019

Я читал некоторые статьи о реализации Spring Keycloak (например: easy-secure-your-spring-boot-apps-with-keycloak ), но никто не упомянул, как использовать с JWT.

Я создал шлюз zuul api и добавил адаптер Keycloak, как описано в предыдущей статье.Это нормально, но я хочу использовать JWT с keycloak.

В другом месте упоминается, что для типа доступа клиента устанавливается только канал-носитель, а для стратегии сеанса - NullAuthenticatedSessionStrategy.Этого достаточно или нужно что-то еще для JWT?

Итак, мои вопросы:

  • Как настроить клиент в Keycloak admin для JWT?
  • Как настроить Keycloakв файле конфигурации бэкенда для JWT?
  • Как настроить адаптер Keycloak для JWT?
  • Как передать информацию о пользователе в микросервис?Создать фильтр в шлюзе?Но как я могу получить информацию о пользователе из запроса?

1 Ответ

0 голосов
/ 21 февраля 2019

Маркер доступа Keycloak - JWT.Это JSON, и каждое поле в этом JSON называется claim.По умолчанию вход в систему username возвращается в claim с именем “preferred_username” в access token.Сервер ресурсов Spring Security OAuth2 ожидает имя пользователя в claim с именем “user_name”.Итак, вам нужно создать маппер для сопоставления вошедшего в систему username с новым claim с именем user_name.

Чтобы предоставить доступ клиенту (микро-сервис), соответствующему role необходимобыть назначенным / сопоставленным на user.

В приложении весенней загрузки необходимо настроить подключение к серверу keycloak, указав auth url, token url, scope, grant-type, client-id и client-secret.

После того, как ваше приложение сможет анализировать токен JWT, вам необходимо создать несколько JwtAccessTokenCustomizer.Этот класс должен расширять DefaultAccessTokenConverter и реализовывать JwtAccessTokenConverterConfigurer классы.Основная логика заключается в методе public OAuth2Authentication extractAuthentication(Map<String, ?> tokenMap).

Затем необходимо настроить OAuth2 Resource Server для предоставления доступа к другим микро-сервисам.Для этого вы определяете здесь - Oauth2RestTemplate Bean.

И, наконец, защитите свой REST API с помощью стандартной конфигурации Component.

Итак, вы можете видеть, что этобольшая работа, которую нельзя описать с помощью кода, покажите часть своей работы, разделите ее на куски и задайте интересующие вас вопросы.

...