Программирование

Как исправить цикл входа OIDC в консоли Artemis 2.43

В Artemis 2.43 OIDC‑авторизация в веб‑консоли зацикливается. Узнайте, как настроить rolePrincipalClass, map‑роли и разместить hawtio‑oidc.properties, чтобы вернуть доступ.

Я обновил Apache ActiveMQ Artemis до версии 2.43.0 и настроил аутентификацию OIDC для веб‑консоли через файл hawtio‑oidc.properties. Консоль всё ещё запрашивает данные у провайдера OIDC, но сразу после входа меня перенаправляют обратно на страницу логина, и я не могу войти как обычный пользователь Artemis. Та же конфигурация работала без проблем в Artemis 2.42.0. Что изменилось в 2.43.0, что вызывает эту проблему, и как правильно включить OIDC‑аутентификацию для веб‑консоли Artemis в этой версии?

Проблема с бесконечным циклом входа возникла из‑за изменений в движке веб‑консоли, которые появились в Artemis 2.43.0.
Брокер перешёл с Hawtio 2.x на Hawtio 4, и теперь для OIDC используется другая реализация principal‑класса, а роль должна присутствовать в ID‑токене.
Поскольку старый файл hawtio‑oidc.properties больше не содержит нужных настроек, брокер не может сопоставить аутентифицированного пользователя с безопасной ролью, и консоль сразу же перенаправляет обратно на страницу логина.

Что изменилось в 2.43.0

  • Консоль теперь построена на Hawtio 4.
  • Интеграция OIDC требует явного указания класса principal‑роли.
  • По умолчанию используется io.hawt.web.auth.oidc.RolePrincipal, который несовместим с ролями JAAS Artemis.
  • Провайдер OIDC должен выдавать claim, совпадающий с ролью брокера, используемой для доступа к консоли (по умолчанию роль amq).
  • Файл hawtio‑oidc.properties должен находиться в каталоге etc брокера (не instance/etc, как в старых релизах).

Эти изменения задокументированы в примечаниях к версии 2.43.0 и в руководстве по OIDC Hawtio.

Как включить OIDC в Artemis 2.43.0

Шаг Действие Пример
1 Поместить конфигурацию OIDC в нужное место ARTEMIS_HOME/etc/hawtio-oidc.properties
2 Определить класс principal‑роли Добавьте rolePrincipalClass=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal
3 Сопоставить роль OIDC с ролью Artemis Добавьте role=amq (или любую роль, которую вы создадите в провайдере)
4 Разрешить роль в брокере В broker.xml задайте права, например:
<permission type="execute" role="amq" address="**" />
5 Установить роль консоли в профиле брокера В artemis.profile задайте HAWTIO_ROLE=amq
6 Убедиться, что провайдер OIDC выдаёт роль В Keycloak создайте клиентскую роль amq и назначьте её пользователям, которым нужен доступ к консоли.
7 Перезапустить Artemis artemis-service restart или эквивалент

Пример hawtio-oidc.properties

properties
# Имя конфигурации OIDC – отображается в UI логина
name=OIDC

# Провайдер OIDC
issuer=https://keycloak.example.com/realms/myrealm
clientId=artemis-console
clientSecret=xxxxxxxxxxxxxxxx

# Redirect URI – должен совпадать с URL консоли
redirectUri=https://artemis.example.com/hawtio

# Сопоставление ролей для Artemis
role=amq
rolePrincipalClass=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal

Пример artemis.profile

# Использовать роль OIDC для веб‑консоли
HAWTIO_ROLE=amq

Быстрый тест

  1. Войдите в консоль.
  2. Если она всё ещё перенаправляет, посмотрите в консоль браузера на ошибки типа “role not found”.
  3. Проверьте, что ID‑токен содержит claim amq (можно воспользоваться https://jwt.ms).
  4. Если claim отсутствует, добавьте роль в провайдере OIDC и назначьте её пользователю.

После корректного сопоставления роли консоль аутентифицируется один раз и сохраняет сессию.

Итоги

  • 2.43.0 перешёл на Hawtio 4, что нарушило старую конфигурацию OIDC.
  • Теперь требуется свойство rolePrincipalClass и соответствующий claim роли от провайдера.
  • Поместите обновлённый hawtio‑oidc.properties в etc, настройте роль и класс principal, а также профиль и права брокера.

После этих изменений веб‑консоль Artemis будет корректно работать с OIDC, как и в 2.42.0.

Авторы
Проверено модерацией
Модерация