Для настройки синхронизации с Active Directory (AD) необходимо открыть окно с настройками федераций (пункт главного меню «User federation») консоли. Keycloak, нажать на кнопку «Add Ldap providers», после чего в открывшемся окне указать параметры подключения к LDAP провайдеру: - в разделе General Options задаются общие параметры:
- Console display name - имя подключения (возможно указать произвольный текст);
- Vendor – тип провайдера, необходимо выбрать из выпадающего списка «Active Directory»;

- в разделе Connection and authentication settings задаются параметры для подключения к серверу AD (параметры подключения зависят от настроек вашего корпоративного домена):
- Connection URL – адрес для подключения к AD в формате: ldap://IP-адрес домена;
- Enable StartTLS – флаг, обозначающий необходимость шифрования подключения к LDAP с помощью StartTLS, по умолчанию устанавливается в «off»;
- Use Truststore SPI – параметр, обозначающий будет ли соединение использовать SPI хранилище доверенных сертификатов (глобальное хранилище ключей Keycloak), по умолчанию устанавливается значение «Never»;
- Connection pooling – флаг, обозначающий необходимо ли использовать пул (кэш) соединений вместо установки нового соединения при каждом запросе, по умолчанию устанавливается в «off»;
- Connection timeout – таймаут для соединения в миллисекундах, по умолчанию параметр остается пустым.
После задания настроек необходимо проверить подключение нажав на кнопку «Test connection». При успешном подключении в правом верхнем углу появится надпись «Successfully connected to LDAP»  В случае ошибки необходимо проверить корректность указанных параметров соединения и доступность контроллера домена, после чего повторить тест. - Bind type – тип метода аутентификации, по умолчанию устанавливается значение «simple»;
- Bind DN – доменная учетная запись в формате [имя домена]\[логин], с которой необходимо авторизоваться в домене, учетная запись должна обладать правами администратора домена;
- Bind credentials - пароль от учетной записи, указанной в параметре «Bind DN».
После задания настроек необходимо проверить прохождение аутентификации в домене нажав на кнопку «Test authentication». При успешной аутентификации в правом верхнем углу появится надпись «Successfully connected to LDAP». 
В случае ошибки необходимо проверить корректность указанных параметров соединения и доступность контроллера домена, после чего повторить тест. - в разделе LDAP searching and updating необходимо указать параметры для экспорта данных:
- Edit mode – режим взаимодействия с доменом, по умолчанию устанавливается значение «READ_ONLY»;
- Users DN – элемент дерева домена, где располагаются пользователи, которых необходимо импортировать: DC=[Домен],DC=[Доменная_Зона];
- Username LDAP attribute – имя атрибута в домене, который хранит логин пользователя, по умолчанию устанавливается значение «cn»;
- RDN LDAP attribute – имя атрибута в домене, который используется в качестве RDN логина пользователя (обычно совпадает с атрибутом, который хранил логин пользователя), по умолчанию устанавливается значение «cn»;
- UUID LDAP attribute – имя атрибута в домене, который хранит уникальный идентификатор (UID) пользователя, по умолчанию устанавливается значение «objectGUID»;
- User object classes – перечень классов пользователей, разделенных запятой, которые должны быть импортированы, по умолчанию устанавливается значение «person, organizationalPerson, user»;
- User LDAP filter – фильтр для поиска импортируемых пользователей в домене. Пример:(memberOf:1.2.840.113556.1.4.1941:=CN=MyMainGroup,OU=MyOrganizationalUnit,DC=MyDomain,DC=com);
- Search scope – тип поиска, по умолчанию устанавливается значение «Subtree» (для поиска во вложенных объектах);
- Read timeout – таймаут для операций чтения в миллисекундах, по умолчанию параметр остается пустым;
- Pagination – флаг, обозначающий, что необходимо использовать постраничный поиск в LDAP, по умолчанию устанавливается значение «off».

- в разделе Synchronization settings необходимо указать настройки синхронизации с доменом:
- Import users – флаг, обозначающий, что необходимо импортировать пользователей из AD, по умолчанию устанавливается значение «on»;
- Sync Registrations - флаг, обозначающий, что необходимо импортировать созданных пользователей в Keycloak в AD, по умолчанию устанавливается значение «on»;
- Batch size – количество пользователей, которое может быть импортировано из AD за одну транзакцию, по умолчанию параметр остается пустым;
- Periodic full sync - флаг, обозначающий, что необходимо периодически синхронизировать всех пользователей из AD с пользователями Keycloak, по умолчанию устанавливается значение «on». Также необходимо установить в поле «Full sync period» период синхронизации в секундах, по умолчанию устанавливается значение 3600;
- Periodic changed users sync - флаг, обозначающий, что необходимо периодически синхронизировать созданных или измененных пользователей из AD с пользователями Keycloak, по умолчанию устанавливается значение «on». Также необходимо установить в поле «Changed users sync period» период синхронизации в секундах, по умолчанию устанавливается значение 60.

- в разделе Kerberos integration необходимо указать параметры для использования протокола Kerberos:
- Allow Kerberos authentication - флаг, обозначающий, что необходимо использовать HTTP авторизацию пользователей с SPNEGO/Kerberos токенами, по умолчанию устанавливается значение «Off»;
- Use Kerberos for password authentication - флаг, обозначающий, что необходимо использовать модуль входа Kerberos для проверки подлинности пары логин/пароль, по умолчанию устанавливается значение «Off».

- в разделе Cache settings необходимо указать параметры кэширования:
- Cache policy – политика кэширования, которая регулирует время очистки кэша, по умолчанию устанавливается значение «DEFAULT», что означает применение настроек по умолчанию для глобального кеша.

- в разделе Advanced settings необходимо указать дополнительные параметры:
- Enable the LDAPv3 password modify extended operation – флаг, обозначающий необходимость использования LDAPv3 (RFC-3062), по умолчанию устанавливается значение «Off»;
- Validate password policy – флаг, обозначающий, что Keycloak должен проверять пароль на соответствие политикам realm перед его обновлением (синхронизацией с AD), по умолчанию устанавливается значение «Off»;
- Trust email – флаг, обозначающий, что Keycloak не должен проверять адрес электронной почты перед его обновлением (синхронизацией с AD), по умолчанию устанавливается значение «Off».
После задания настроек необходимо проверить синхронизацию с AD нажав на кнопку «Query Supported Extension». При успешной аутентификации в правом верхнем углу появится надпись «Successfully connected to LDAP». 
В случае ошибки необходимо проверить корректность указанных параметров соединения и доступность контроллера домена, после чего повторить тест. В завершение настройки необходимо нажать кнопку Save. После завершения настройки в окне с настройками федераций (пункт главного меню «User federation») консоли Keycloak появится созданное выше подключение. 
Далее необходимо настроить синхронизацию групп пользователей, для этого необходимо нажать на значок подключения в окне с настройками федераций, после чего перейти на вкладку «Mappers» в открывшемся окне и нажать на кнопку «Add mapper». 
Для настройки синхронизации групп пользователей необходимо указать следующие параметры для сопоставления: - Name – название объекта (маппера), произвольный текст, по умолчанию устанавливается значение «Grp»;
- Mapper type – тип объекта (маппера), по умолчанию устанавливается значение «group-ldap-mapper»;
- LDAP Groups DN – фильтр для сопоставления групп в формате: OU=Подразделение_В_ AD,DC=Домен,DC=Доменная_зона. Пример: OU=MyOrganizationalUnit,DC=MyDomain,DC=com;
- Group Name LDAP Attribute – имя атрибута AD, в котором хранится имя группы пользователей, по умолчанию устанавливается значение «cn»;
- Group Object Classes - перечень классов групп пользователей, разделенных запятой, которые должны быть импортированы, по умолчанию устанавливается значение «group»;
- Preserve Group Inheritance – флаг, обозначающий включение или выключение распространения группового наследования. То есть в случае, если группа пользователей состоит из других групп пользователей, то вся эта иерархия наследования также перенесётся в Keycloak, по умолчанию устанавливается значение «Off»;
- Ignore Missing Groups – флаг, обозначающий, что необходимо игнорировать отсутствующие группы, по умолчанию устанавливается значение «On»;
- Membership LDAP Attribute - имя атрибута AD, в котором хранится сопоставление пользователей группам, по умолчанию устанавливается значение «member»;
- Membership Attribute Type – тип атрибута, в котором хранится сопоставление пользователей группам, по умолчанию устанавливается значение «DN»;
- Membership User LDAP Attribute - имя атрибута AD, в котором хранится сопоставление пользователя к группам, по умолчанию устанавливается значение «cn»;
- LDAP Filter – преднастроенный дополнительный фильтр для сопоставления, по умолчанию поле необходимо оставить пустым;
- Mode – режим сопоставления, по умолчанию устанавливается значение «READ_ONLY»;
- User Groups Retrieve Strategy – стратегия экспорта групп, по умолчанию устанавливается значение «LOAD_GROUPS_BY_MEMBER_ATTRIBUTE»;
- Member-Of LDAP Attribute – имя атрибута AD, в котором для пользователя хранится перечень групп, в которые он включен, по умолчанию устанавливается значение «memberOf»;
- Mapped Group Attributes – перечень атрибутов групп AD, которые необходимо сопоставить с атрибутами Keycloak, по умолчанию поле необходимо оставить пустым;
- Drop non-existing groups during sync – флаг, обозначающий необходимость удаления групп из Keycloak, которые больше не существуют в AD, по умолчанию устанавливается значение «Off»;
- Groups Path – путь, куда необходимо синхронизировать группы из AD, по умолчанию устанавливается значение «/» (корневая группа).
После завершения настройки группы и пользователи из AD, согласно заданной конфигурации, должны появиться с Keycloak. Далее этим группам можно будет назначать роли, как описано выше. |