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

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

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

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

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

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

    ldap0
    Для всех пользователей в Active Directory должен быть указан адрес электронной почты.
  2. Подключитесь к сервису Keycloak по адресу https://auth.<FQDN Cloudlink>/auth/.

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

  4. Перейдите во вкладку User Federation и нажмите Add new providerLDAP.

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

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

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

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

    • Use Truststore SPI — определяет использование Truststore SPI:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ldap4
  8. Для назначения роли пользователю:

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

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

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

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

    ldap6
    ldap7

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

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

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

По умолчанию в Keycloak существует только realm master. Для интеграции с 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 — cloudlink

      • Email theme — cloudlink

        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. Укажите следующие параметры для федерации пользователей:

    • 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

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

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

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

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

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

    ad sign in name