HTTP-аутентификация Zabbix с использованием Keycloak-прокси

Я пытаюсь интегрировать Zabbix UI с Keycloak SSO, используя keycloak-proxy. Моя установка следующая:

  1. Nginx - это точка входа: он обрабатывает "виртуальный хост", направляя запросы к keycloak-proxy.
  2. Keyclock-proxy настроен с client_id, client_secret и т. Д. Для аутентификации пользователей в Keycloak;
  3. Панель управления Zabbix на Apache, настройка по умолчанию: я включаю HTTP-аутентификацию.

Я создал тестового пользователя как в Keycloak, так и в Zabbix. Процесс аутентификации в порядке: я перенаправлен на KeyCloak, я выполняю аутентификацию, но всегда получаю сообщение "Логин или пароль неверны". из Zabbix UI.

Что я делаю неправильно? Кто-нибудь пробовал использовать OIDC-аутентификацию с Zabbix?

Я использую Zabbix 4.0, KeyCloak 4.4, Keycloak-proxy 2.3.0.

конфигурация keycloak-proxy:

client-id: zabbix-client
client-secret: <secret>

discovery-url: http://keycloak.my.domain:8080/auth/realms/myrealm
enable-default-deny: true
enable-logout-redirect: true
enable-logging: true
encryption_key: <secret>
listen: 127.0.0.1:10080
redirection-url: http://testbed-zabbix.my.domain
upstream-url: http://a.b.c.d:80/zabbix
secure-cookie: false
enable-authorization-header: true

resources:
- uri: /*
  roles:
    - zabbix

1 ответ

Решение

Zabbix ожидает PHP_AUTH_USER (или же REMOTE_USER или же AUTH_USER) заголовок с именем пользователя, но keycloak-proxy не предоставляет его. Давайте использовать электронную почту в качестве имени пользователя (теоретически вы можете использовать любое утверждение из токена доступа). Добавьте адрес электронной почты в заголовок запроса в конфигурации keycloak-proxy:

add-claims:
- email

И создать PHP_AUTH_USER переменная из заголовка письма в конфигурации Zabbix Apache:

SetEnvIfNoCase X-Auth-Email "(.*)" PHP_AUTH_USER=$1

Примечание. Синтаксис Conf может быть неправильным, потому что он не в моей голове - возможно, понадобятся некоторые настройки.

Кстати: есть (хакерский) пользовательский патч - https://support.zabbix.com/browse/ZBXNEXT-4640, но keycloak-gatekeeper - лучшее решение

Для записи: keycloak-proxy = keycloak-gatekeeper (проект был недавно переименован и недавно перенесен в keycloak org)

Другие вопросы по тегам