Интеграция с каталогом LDAP

В данном руководстве описывается интеграция Нимбиус с AD с использованием ПО Keycloak. Keycloak входит в состав дистрибутива Нимбиус и запускается в отдельном контейнере.

В данной реализации между AD и Keycloack настраивается федерация, в свою очередь интеграция Нимбиус и Keycloack реализуется через OIDC. 

Для настройки Keycloack необходимо выполнить следующее:

  1. Зайти в веб-интерфейс Keycloak:

    https://<KC_SERVER>:<KC_SERVER_PORT>
    

    • Логин по умолчанию: keycloak;

    • Пароль по умолчанию: keycloak;

  2. Создать новый realm в Keycloak;

    Рисунок 3

  3. В новом realm добавить LDAP провайдер;

    Рисунок 4

  4. Указать все необходимые параметры для добавления LDAP провайдера

    Общие настройки LDAP провайдера

    Рисунок 5

    Настройки соединения

    Рисунок 6

    Настройки аутентификации

    Рисунок 7

    Настройки поиска и обновления пользователей

    Рисунок 8

    Описание значений полей настройки LDAP провайдера и пример их заполнения

    Имя параметра Пример заполнения Значение
    Connection and authentication settings
    Connection URL ldap://<LDAP_SERVER> URL для подключения LDAP сервера
    Bind type SIMPLE Тип метода аутентификации, используемого во время операции привязки LDAP
    Bind DN keycloak@example.domain DN администратора LDAP
    Bind credentials Expamle_password Пароль администратора LDAP
    LDAP searching and updating
    Edit mode READ_ONLY Права доступа к LDAP
    Users DN CN=Users,DC=example,DC=domain Полный DN дерева LDAP, в котором находятся пользователи
    Username LDAP attribute UserPrincipalName Атрибут LDAP, который отображает имя пользователя
    User object classes top, person, organizationalPerson, user Значения атрибута объектного класса LDAP

    Важно

    Далее необходимо проверить соединение с сервером LDAP и доступ к нему через Bind. Для этого следует нажать «Test connection» и «Test authentication». После успешного сохранения всех параметров во вкладке «Action» нажимаем кнопку Sync all users для синхронизации пользователей.

    Добавить новый mapper типа «group-ldap-mapper» к новому провайдеру LDAP

    Перечень настроек mapper

    Рисунок 9

    Рисунок 10

    Create new mapper

    • Name - Название mapper «mappergroups»;
    • LDAP Groups DN - LDAP DN, где сохраняются группы этого дерева: OU=Groups,DC=example,DC=domain;

    Важно

    Далее во вкладке «Action» необходимо нажать кнопку «Sync LDAP groups to Keycloak» для синхронизации групп.

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

    Общие настройки client

    Рисунок 11

    Настройки привилегий

    Рисунок 12

    Настройки авторизации

    Рисунок 13

    Описание значений полей настройки client и пример их заполнения

    Имя параметра Пример заполнения Значение
    General Settings
    Client ID nimbius ID клиента
    Name nimbius Имя клиента
    Access settings
    Valid redirect URIs https://<FQDN>:8443/ui/service
    https://<FQDN>:8443
    https://<FQDN>:8443/oidc_login/redirect_uri
    URI, на который браузер может перенаправить после успешного входа в cистему.
    Добавлять как новые переменные!
    В качестве FQDN используется IP адрес или dns имя хостовой машины с запущенным Нимбиус
    Web origins https://<FQDN>:8443 Разрешенные источники CORS
    Capability config
    Client authentication On Тип клиента OIDC

  5. Создать «Сlient scope» внутри realm и указать все необходимые параметры

    Меню client scope

    Рисунок 14

    Создание client scopes

    Настройки client scopes

    Рисунок 15

    Create client scope

    • Name - Имя «client scope»: nimbius-client-scopes.
  6. Во вкладке «mappers» раздела «client scopes» добавить новые связи, см. рисунки и таблицу ниже.

    Client scopes вкладка mappers

    Рисунок 16

    Добавление mappers для client scopea

    Рисунок 17

    Перечень необходимых mappers

    Name Consent Required Mapper Type Token Claim Name Full group path Add to ID token Add to access token Add to userinfo
    groups OFF Group Membership groups OFF ON ON OFF
    Client Host OFF User Session Note clientHost clientHost String ON ON
    Client ID OFF User Session Note clientId clientId String ON ON
    Client IP Address OFF User Session Note clientAddress clientAddress String ON ON

  7. В ранее созданном клиенте во вкладке «client scopes» добавить новый client scopes

    Рисунок 18

  8. В файле «.env» (файл дистрибутива Нимбиус) изменить значения параметров по умолчанию:

    OIDC_PROVIDER_METADATA_URL=https://nimbius
    OIDC_CLIENT_ID=nimbius
    OIDC_CLIENT_SECRET=Ni24MB42IuS
    OIDC_OAUTH_INTROSPECTION_ENDPOINT=https://nimbius
    

    Параметр Значение Пояснение
    OIDC_PROVIDER_METADATA https://<KC_SERVER>:<KC_SERVER_PORT>/realms/<REALM>/.well-known/openid-configuration URL метаданных сервера
    OIDC_CLIENT_ID nimbius ID клиента со стороны Keycloak
    OIDC_CLIENT_SECRET - Клиентский «секрет», который необходимо получить в разделе «Credentials» клиента
    OIDC_OAUTH_INTROSPECTION https://<KC_SERVER>:<KC_SERVER_PORT>/realms/<REALM>/protocol/openid-connect/certs URL интроспекции

    Примечание

    При отказе использования Keycloak параметры по умолчанию должны оставаться неизменными.

  9. Перезапустить контейнер nimbius-core

    $ docker restart nimbius-core
    
  10. Настроить аутентификацию в Нимбиус:

    • В разделе «Authentication», переключить режим на «External (httpd)»;

    • В появившемся разделе «External Authentication (httpd) Settings» включить параметр «Enable OpenID-Connect» (тип провайдера внешней аутентификации);

    • В разделе «Role Settings» включить параметр «Get User Groups from External Authentication (httpd)» (получение групп внешней аутентификации).

    Рисунок 19