Настройка интеграции Keycloak с Active Directory по LDAP
Инструкция описывает процесс подключения Active Directory к Keycloak с использованием LDAP, настройку федерации пользователей, а также проверку синхронизации и аутентификации в существующем и новом пространстве realm.
1. Синхронизация пользователей по LDAP в существующий realm
Для использования внешнего источника учетных записей необходимо подключить LDAP-провайдер в Keycloak.
Чтобы подключить LDAP-провайдер в Keycloak:
-
Разверните Active Directory и создайте сервисную учетную запись, которая будет использоваться для подключения к Active Directory с правами администратора. В данном примере используется пользователь
dcmservice.Для всех пользователей в Active Directory должен быть указан адрес электронной почты.
-
Подключитесь к сервису Keycloak по адресу https://auth.<FQDN_dcmanager>/auth/.
-
Выберите нужное пространство realm, например Portal.
-
Перейдите на вкладку User Federation, нажмите Add new provider и выберите LDAP.
-
В открывшемся окне укажите основные параметры подключения:
-
Наименование в консоли — отображаемое имя 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
-
-
После задания основных параметров настройте параметры поиска и синхронизации пользователей:
-
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
-
-
Чтобы проверить подключение, перейдите на вкладку Users, в поле поиска введите символ
*.В списке должны отобразиться как локальные пользователи Keycloak, так и пользователи из Active Directory.
-
Чтобы назначить роль пользователю:
-
Перейдите в административной консоли в раздел .
-
Выберите нужную роль и на вкладке Участники нажмите Добавить участника, затем выберите пользователя.
-
-
Чтобы проверить аутентификацию, выполните повторный вход в административную панель Keycloak под учетными данными пользователя из Active Directory.
В качестве имени пользователя используйте значение атрибута cn и пароль, заданный в Active Directory.
2. Синхронизация пользователей по LDAP в новый realm
|
ОС Windows 10 не поддерживает создание контроллера домена Active Directory. Если у вас установлена ОС Windows 10, рекомендуется развернуть Windows Server на виртуальной машине и использовать его для создания Active Directory. |
2.1. Создание нового realm
По умолчанию в Keycloak существуют realm master и Portal. Для интеграции с Active Directory вы можете создать отдельный realm, который будет использоваться как источник аутентификации.
Чтобы добавить realm:
-
В верхнем левом углу нажмите Add realm.
-
Введите произвольное название, например, «active-directory» и нажмите Create.
-
Слева в панели выберите Realm Settings и заполните параметры нового realm:
-
На вкладке General введите:
-
Display name — Active Directory
-
-
На вкладке Themes введите:
-
Login theme —
zvirt-dc-manager -
Email theme —
zvirt-dc-manager
-
-
На вкладке Localization введите:
-
Internationalization —
Enabled -
Supported locales — русский
-
Default locale — русский
-
-
-
Нажмите Save.
-
Скопируйте ссылку на 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
-
В панели слева выберите User federation и нажмите Add LDAP Provider.
-
Укажите параметры для 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
-
| Значения Bind DN и Users DN зависят от структуры Active Directory. Если пользователи находятся в другом OU, укажите соответствующий DN. |
-
Нажмите Save.
-
Проверьте подключение, используя Test connection и Test authentication.
-
Нажмите Sync all users и убедитесь, что синхронизация завершилась без ошибок.
| При синхронизации в Keycloak создаются локальные представления пользователей. Пароли не копируются — аутентификация выполняется через Active Directory. |
2.3. Создание клиента в realm
Для подключения realm Portal к realm active-directory необходимо создать OpenID Connect client, который будет использоваться для установления доверия между этими realm.
-
Перейдите в realm active-directory.
-
В левой панели выберите Clients и нажмите Create client.

-
Укажите параметры клиента:
-
Client ID —
active-directory -
Valid redirect URIs —
* -
Valid post logout redirect URIs —
* -
Web origins —
* -
Client authentication —
On
Использование значения
*разрешает перенаправления и запросы с любых URL. Такой вариант допустим в тестовой или закрытой среде. В продуктивной среде рекомендуется указывать конкретные URL портала.
-
-
Нажмите Save.
-
Перейдите на вкладку Credentials созданного клиента.
-
Скопируйте значение поля Client Secret.
|
Client Secret используется для подтверждения доверия между realm Portal и realm active-directory. Это значение потребуется при настройке Identity Provider. |
2.4. Настройка Identity Provider в realm Portal
-
Перейдите в realm Portal.
-
В левой панели выберите Identity Providers и нажмите Add provider.
-
Выберите тип Keycloak OpenID Connect.
-
Укажите параметры:
-
Alias —
active-directory -
Display name —
Active Directory -
Discovery endpoint — сохранённый ранее OpenID Endpoint Configuration
-
Client ID —
active-directory -
Client Secret — значение Client Secret, полученное в realm active-directory
-
-
Сохраните изменения.
-
Повторно откройте настройки подключения и установите:
-
Trust Email —
On -
Sync mode —
Force
-
-
Нажмите Save.
2.5. Проверка синхронизации Keycloak с Active Directory
Чтобы проверить синхронизацию Keycloak с Active Directory:
-
В интерфейсе Keycloak в левой панели выберите Clients.
-
Откройте URL консоли аккаунта — Keycloak Account Manager.
-
В правом верхнем углу нажмите Вход.
-
Введите учетные данные любого пользователя из Active Directory.
-
После успешной аутентификации убедитесь, что профиль пользователя отображается корректно.