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

Настройка интеграции Keycloak с Active Directory по LDAP

Инструкция описывает процесс подключения Active Directory к Keycloak с использованием LDAP, настройку федерации пользователей, а также проверку синхронизации и аутентификации в существующем и новом пространстве realm.

1. Синхронизация пользователей по LDAP в существующий realm

Для использования внешнего источника учетных записей необходимо подключить LDAP-провайдер в Keycloak.

Чтобы подключить LDAP-провайдер в Keycloak:

  1. Разверните Active Directory и создайте сервисную учетную запись, которая будет использоваться для подключения к Active Directory с правами администратора. В данном примере используется пользователь dcmservice.

    Для всех пользователей в Active Directory должен быть указан адрес электронной почты.

  2. Подключитесь к сервису Keycloak по адресу https://auth.<FQDN_dcmanager>/auth/.

  3. Выберите нужное пространство realm, например Portal.

  4. Перейдите на вкладку User Federation, нажмите Add new provider и выберите LDAP.

    ldap1
  5. В открывшемся окне укажите основные параметры подключения:

    • Наименование в консоли — отображаемое имя LDAP-провайдера в административной консоли

    • Поставщик — тип LDAP-провайдера. Выберите Active Directory

    • URL соединения — URL для подключения к LDAP-серверу в формате ldap://<IP-адрес или DNS-имя>:389

    • Использование доверенных сертификатов SPI — определяет использование Truststore SPI:

      • Always — использовать всегда

      • Never — не использовать

      • Only for ldaps — использовать только при подключении по LDAPS

    • Таймаут соединения — таймаут LDAP-соединения в миллисекундах

    • Тип аутентификации — тип аутентификации при подключении к LDAP:

      • none — анонимная аутентификация

      • simple — аутентификация с использованием Distinguished Name (DN) и пароля

    • Сопоставление DN — DN учетной записи администратора LDAP, используемой Keycloak для доступа к каталогу

    • Bind credentials — пароль учетной записи администратора LDAP

      ldap2
  6. После задания основных параметров настройте параметры поиска и синхронизации пользователей:

    • Edit mode — режим работы с LDAP:

      • READ_ONLY — LDAP используется только для чтения

      • WRITABLE — изменения могут синхронизироваться в LDAP

      • UNSYNCED — данные пользователей импортируются без дальнейшей синхронизации

    • Users DN — DN контейнера (OU — Organizational Unit), в котором находятся пользователи LDAP. Например: ou=users,dc=example,dc=com

    • Username LDAP attribute — атрибут LDAP, используемый как имя пользователя в Keycloak. Для Active Directory обычно используется sAMAccountName или cn

    • RDN LDAP attribute — атрибут LDAP, используемый как Relative Distinguished Name (RDN) пользователя. Чаще всего совпадает с Username LDAP attribute

    • UUID LDAP attribute — атрибут LDAP, используемый как уникальный идентификатор объекта. Для Active Directory необходимо указать objectGUID

    • User object classes — список objectClass для пользователей LDAP, разделённых запятыми, например: inetOrgPerson, organizationalPerson

      ldap3
  7. Чтобы проверить подключение, перейдите на вкладку Users, в поле поиска введите символ *.

    В списке должны отобразиться как локальные пользователи Keycloak, так и пользователи из Active Directory.

  8. Чтобы назначить роль пользователю:

    1. Перейдите в административной консоли в раздел Управление доступом  Роли.

    2. Выберите нужную роль и на вкладке Участники нажмите Добавить участника, затем выберите пользователя.

  9. Чтобы проверить аутентификацию, выполните повторный вход в административную панель Keycloak под учетными данными пользователя из Active Directory.

    В качестве имени пользователя используйте значение атрибута cn и пароль, заданный в Active Directory.

    ldap7

2. Синхронизация пользователей по LDAP в новый realm

ОС Windows 10 не поддерживает создание контроллера домена Active Directory. Если у вас установлена ОС Windows 10, рекомендуется развернуть Windows Server на виртуальной машине и использовать его для создания Active Directory.

2.1. Создание нового realm

По умолчанию в Keycloak существуют realm master и Portal. Для интеграции с Active Directory вы можете создать отдельный realm, который будет использоваться как источник аутентификации.

Чтобы добавить realm:

  1. В верхнем левом углу нажмите Add realm.

  2. Введите произвольное название, например, «active-directory» и нажмите Create.

    ad new realm
  3. Слева в панели выберите Realm Settings и заполните параметры нового realm:

    1. На вкладке General введите:

      • Display name — Active Directory

        realm settings 1
    2. На вкладке Themes введите:

      • Login theme — zvirt-dc-manager

      • Email theme — zvirt-dc-manager

        realm settings 2
    3. На вкладке Localization введите:

      • Internationalization — Enabled

      • Supported locales — русский

      • Default locale — русский

        realm settings 3
  4. Нажмите Save.

  5. Скопируйте ссылку на OpenID Endpoint Configuration.

    Этот endpoint содержит метаданные OpenID Connect и будет использоваться при настройке Identity Provider в realm Portal.

    Пример: https://auth.example.com/auth/realms/active-directory/.well-known/openid-configuration

2.2. Настройка федерации пользователей через Active Directory

  1. В панели слева выберите User federation и нажмите Add LDAP Provider.

  2. Укажите параметры для LDAP-провайдера:

    • Console display name — active-directory

    • Vendor — Active Directory

    • Connection URL — ldap://<active-directory-ip-or-dns>

    • Bind type — simple

    • Bind DN — CN=dadmin,CN=Users,DC=test,DC=ad

    • Bind credentials — <password>

    • Edit mode — READ_ONLY

    • Users DN — CN=Users,DC=test,DC=ad

    • Trust email — On

      user federation
Значения Bind DN и Users DN зависят от структуры Active Directory. Если пользователи находятся в другом OU, укажите соответствующий DN.
  1. Нажмите Save.

  2. Проверьте подключение, используя Test connection и Test authentication.

  3. Нажмите Sync all users и убедитесь, что синхронизация завершилась без ошибок.

При синхронизации в Keycloak создаются локальные представления пользователей. Пароли не копируются — аутентификация выполняется через Active Directory.

2.3. Создание клиента в realm

Для подключения realm Portal к realm active-directory необходимо создать OpenID Connect client, который будет использоваться для установления доверия между этими realm.

  1. Перейдите в realm active-directory.

  2. В левой панели выберите Clients и нажмите Create client.

    realm client 1

  3. Укажите параметры клиента:

    • Client ID — active-directory

    • Valid redirect URIs — *

    • Valid post logout redirect URIs — *

    • Web origins — *

    • Client authentication — On

      realm client 2

      Использование значения * разрешает перенаправления и запросы с любых URL. Такой вариант допустим в тестовой или закрытой среде. В продуктивной среде рекомендуется указывать конкретные URL портала.

  4. Нажмите Save.

  5. Перейдите на вкладку Credentials созданного клиента.

  6. Скопируйте значение поля Client Secret.

Client Secret используется для подтверждения доверия между realm Portal и realm active-directory. Это значение потребуется при настройке Identity Provider.

2.4. Настройка Identity Provider в realm Portal

  1. Перейдите в realm Portal.

  2. В левой панели выберите Identity Providers и нажмите Add provider.

  3. Выберите тип Keycloak OpenID Connect.

  4. Укажите параметры:

    • Alias — active-directory

    • Display name — Active Directory

    • Discovery endpoint — сохранённый ранее OpenID Endpoint Configuration

    • Client ID — active-directory

    • Client Secret — значение Client Secret, полученное в realm active-directory

      portal client
  5. Сохраните изменения.

  6. Повторно откройте настройки подключения и установите:

    • Trust Email — On

    • Sync mode — Force

  7. Нажмите Save.

    change identity providers settings

2.5. Проверка синхронизации Keycloak с Active Directory

Чтобы проверить синхронизацию Keycloak с Active Directory:

  1. В интерфейсе Keycloak в левой панели выберите Clients.

  2. Откройте URL консоли аккаунта — Keycloak Account Manager.

  3. В правом верхнем углу нажмите Вход.

    ad sign in
  4. Введите учетные данные любого пользователя из Active Directory.

  5. После успешной аутентификации убедитесь, что профиль пользователя отображается корректно.

    ad sign in name