Подключение Active Directory через Keycloak и синхронизация пользователей
| ОС Windows 10 не поддерживает создание контроллера домена Active Directory. Если у вас установлена ОС Windows 10, рекомендуется развернуть Windows Server на виртуальной машине и использовать его для создания Active Directory. |
1. Создание нового realm
По умолчанию в Keycloak существует только realm master. Для интеграции с Active Directory необходимо создать отдельный realm, который будет использоваться как источник аутентификации.
Для добавления realm:
-
В верхнем левом углу нажмите Add realm.
-
Введите произвольное название, например, "active-directory" и нажмите Create.
-
Слева в панели выберите Realm Settings и заполните параметры нового realm:
-
На вкладке General введите:
-
Display name — Active Directory.
-
-
На вкладке Themes введите:
-
Login theme —
cloudlink -
Email theme —
cloudlink
-
-
На вкладке 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. Настройка федерации пользователей через Active Directory
-
В панели слева выберите User federation и нажмите Add LDAP Provider.
-
Укажите следующие параметры для федерации пользователей:
-
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. |
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. |
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.
5. Проверка синхронизации Keycloak с Active Directory
-
В интерфейсе Keycloak в левой панели выберите Clients.
-
Откройте URL консоли аккаунта — Keycloak Account Manager.
-
В правом верхнем углу нажмите Вход.
-
Введите учетные данные любого пользователя из Active Directory.
-
После успешной аутентификации убедитесь, что профиль пользователя отображается корректно.
