Первоначальное решение, которое необходимо принять, заключается в том, чтобы сказать, что пользователь, обращающийся к странице сваггера, должен иметь токен доступа (т. Е. Шаблон 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