Всем добрый день! Вообще инструкция по настройке SSO в LibreNMS есть в офф.документации, но там нет инфы о настройке связки с Keycloak, поэтому оставлю заметку тут.

Создаем клиента в Keycloak

Заходим в админку Keycloak и создаем нового клиента.

Заполняем поля:

  • Client ID: librenms;
  • Enabled: On;
  • Client Protocol: openid-connect;
  • Access Type: confidential;
  • Valid Redirect URIs: URL вашего LibreNMS, с которого будет осуществлятся редирект,например, librenms.0xbbeer.ru/*

Остальные параметры можно оставить по умолчнию или заполнить как нужно Вам.

keycloak-librenms

Сохраняем созданного клиента и переходим на вкладку Credentials. Копируем значение поля Secret, он нам пригодится в будущем.

Настраиваем LibreNMS

Все настройки для LibreNMS применяются через консольную утилиту lnms.

Для включения возможности настройки SSO необходимо установить плагин Socialite Provider.

Заходим на сервер LibreNMS и вводим в терминале:

1lnms plugin:add socialiteproviders/keycloak

Далее нам необходимо заглянуть в документацию плагина для того, чтобы посмотреть, какие параметры мы можем использовать в своей конфигурации.

В документации для Keycloak указаны следующие параметры:

1'keycloak' => [
2  'client_id' => env('KEYCLOAK_CLIENT_ID'),
3  'client_secret' => env('KEYCLOAK_CLIENT_SECRET'),
4  'redirect' => env('KEYCLOAK_REDIRECT_URI'),
5  'base_url' => env('KEYCLOAK_BASE_URL'),   // Specify your keycloak server URL here
6  'realms' => env('KEYCLOAK_REALM')         // Specify your keycloak realm
7],
  • client_id - ClientID из Keycloak (librenms);
  • client_secret - Скопированный нами Secret из вкладки Credentials;
  • redirect - не будем использовать;
  • base_url - URL Keycloak;
  • realms - URL реалма Keycloak (master по умолчанию);

Для конфигурации SSO в LibreNMS нам остается подставить имена параметров и название провайдера в следующий шаблон:

1auth.socialite.configs.*provider name*.*value*

В итоге должны получиться примерно такие строки:

1lnms config:set auth.socialite.configs.keycloak.client_id librenms
2lnms config:set auth.socialite.configs.keycloak.client_secret GDFSGDGERWERGDFSGVBRG
3lnms config:set auth.socialite.configs.keycloak.base_url https://sso.0xbbeer.ru
4lnms config:set auth.socialite.configs.keycloak.realms https://sso.0xbbeer.ru/realms/master

Далее добавляем event listener. Строку “\SocialiteProviders\Keycloak\KeycloakExtendSocialite” также можно глянуть в документации в разделе Add provider event listener :

1lnms config:set auth.socialite.configs.keycloak.listener "\SocialiteProviders\Keycloak\KeycloakExtendSocialite"

Перезапускаем Nginx.

Включение регистрации пользователей и редиректа

По умолчанию создание новых пользователей при входе через Keycloak запрещено, и при попытке зайти через Keycloak выдаст ошибку.

Его можно включить в веб интерфейсе, для этого заходим в LibreNMS, нажимаем шестеренку, выбираем GlobaSettings librenms-settings

Далее Authentication –> Socialite Settings и включаем Allow registration via provider.

librenms-settings-enable

Если это необходимо,можно включить Redirect Login page1. Опция позволяет редиректить со страницы ввода пароля LibreNMS на страницу аутентификации Keycloak, если при открытии LibreNMS вы не были залогинены. При включении это опции не забудьте назначить права администратора для пользователя созданного после входа через Keycloak


  1. Если вдруг вы включили опцию, но Вам нужно зайти в LibreNMS, введя логин и пароль (например, забыли назначиь админские права), добавьте в конец сслыки ?redirect=0↩︎