Я хотел бы интегрировать Keycloak с Spring Boot 2 и Swagger - PullRequest
0 голосов
/ 24 октября 2018

Теперь я использую Spring boot version 2.0.0.RELEASE, Swagger версии 3.1.6 и Keycloak of Jboss.Я хотел бы знать, как настроить в application.yml, тогда пусть swagger может получить access_token из Keycloak.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 24 октября 2018

Первоначальное решение, которое необходимо принять, заключается в том, чтобы сказать, что пользователь, обращающийся к странице сваггера, должен иметь токен доступа (т. Е. Шаблон URL для сваггера защищен, а пользователь должен войти в систему, чтобы попасть в сваггер), или вы исключаетеперехватывать URL-адреса из keycloak, чтобы к его пользовательскому интерфейсу можно было обращаться без маркера.

Если вы используете пружинный загрузочный адаптер keycloak *, то шаблоны URL для защиты (и какие роли требуютсядля доступа к ним) настраиваются в файле application.yml или application.properties как ограничения безопасности.Например, в качестве свойств:

keycloak.security-constraints[0].authRoles[0]=user
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/customers/*

Это можно перевести на yaml как:

keycloak:
  security-constraints[0]:
    -authRoles[0]: user
    -securityCollections[0]:
      -patterns[0]: /customers/*

(Пример реального yml на https://github.com/codemonkeybr/skip/blob/master/skip-cart/src/main/resources/application.yml#L29)

Все, что не подпадает под ограничения безопасности, не ограничено.Существует аналогичный способ сделать это с Spring Security, если вы не используете официальный adpater keycloak - обычно вы делаете это в java-классе SecurityConfiguration.

Затем вы сталкиваетесь с решениями, основанными на выбранном вами oauth2.flow и используете ли вы функцию 'try it out'.Вы можете отображать описания без необходимости использовать токен, но для его проверки действительно нужен токен.В приведенном выше примере yaml также есть способ сообщить swagger URL-адрес издателя токена:

swagger:
  auth:
    token-url: ${keycloak.auth-server-url}/realms/${keycloak.realm}/protocol/openid-connect/token/
    client-id: skip-local

Эта конфигурация считывается классом конфигурации java swagger и является частью целого пример , который вы могли бы запустить.Этот конкретный вопрос о том, как настроить swagger для работы с токеном oauth2, не является специфическим для keycloak и является общей конфигурацией swagger-oauth2, для которой есть руководство по baeldung , и есть пример использования другого режима в интеграция Keycloak в Swagger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...