Внешняя авторизация Visiology
Так как Keycloak, используемый платформой Visiology, имеет встроенную поддержку для подключения к существующим серверам LDAP или Active Directory и поддерживает OpenID Connect, OAuth 2.0 и SAML, администраторы могут существенно упростить процесс администрирования пользователей и групп.
Рассмотрим в качестве примера интеграцию с Active Directory, которая позволяет автоматизировать процесс создания учетных записей пользователей и назначение им прав доступа посредством мапирования групп Active Directory на роли в Visiology.
Процедура интеграции включает в себя:
- настройку подключения к LDAP провайдеру в Keycloak;
- настройку мапперов для корректного извлечения атрибутов импортируемых пользователей;
- синхронизацию пользователей.
Настройка подключения к LDAP провайдеру
Для настройки подключения необходимо выполнить следующие шаги:
- Откройте Keycloak и выберите область (realm), в которой вы будете производит настройки. В нашем примере это Visiology:
- Нажмите User federation в боковой панели и выберите Add Ldap providers в окне справа:
- В открывшейся форме укажите параметры подключения и нажмите Save. Все обязательные поля, помеченные красной звездочкой, должны быть заполнены:
После заполнения полей вы можете протестировать соединение нажав на кнопки Test connection и Test authentication. Если параметры указаны без ошибок, в правом верхнем углу вы увидите сообщение о том, что соединение прошло успешно:
Если вы не хотите извлекать данные всех пользователей, зарегистрированных на домене, вы можете указать определенную группу пользователей. Для этого необходимо в секции LDAP searching and updating настроек LDAP провайдера указать данную группу. Сделать это можно так: OU=Acme, где OU – подразделение (Organizational Unit), а Acme – название группы:
Настройка мапперов
При создании LDAP провайдера автоматически создается необходимая группа мапперов (за исключением group-ldap-mapper), которые содержат в себе атрибуты пользователей. Вы можете отредактировать как отредактировать их, так и создать новые мапперы для передачи дополнительных атрибутов пользователей.
Редактирование маппера
Для изменения параметров маппера выполните следующие шаги:
- Щелкните на созданный LDAP провайдер в окне User federation:
- В открывшемся окне перейдите на вкладку Mappers и выберите маппер, который хотите отредактировать:
-
Обновите требуемые параметры. Для извлечения пользовательских атрибутов используются специальные Active Directory атрибуты (см. таблицу основных пользовательских атрибутов ниже). В нашем примере мы укажем
givenNameв поле LDAP Attribute для извлечения имени пользователя:
ТАБЛИЦА ОСНОВНЫХ ПОЛЬЗОВАТЕЛЬСКИХ АТРИБУТОВ ACTIVE DIRECTORY
|
Атрибут |
Англоязычное название |
Русскоязычное название |
Пример |
|
Подразделение (OU – Organizational Unit) |
|||
|
distinguishedName |
Distinguished Name |
Отличительное (уникальное) имя |
OU=Компания,DC=domain,DC=com |
|
name |
Компания |
||
|
Группа |
|||
|
distinguishedName |
Distinguished Name |
Отличительное (уникальное) имя |
CN=Группа,OU=Компания, |
|
name |
Группа |
||
|
member |
Members |
Члены группы (какие пользователи входят в данную группу) |
CN=Сергей Петрович Иванов, |
|
Пользователь |
|||
|
DN |
Distinguished Name |
Отличительное (уникальное) имя |
CN=Сергей Петрович Иванов, |
|
DC |
Domain Component |
Компонент(класс) доменного имени. |
DC=domain,DC=com |
|
OU |
Organizational Unit |
Подразделение |
Компания |
|
CN |
Common Name |
Общее имя |
Сергей Петрович Иванов |
|
givenName |
First name |
Имя |
Сергей Петрович |
|
name |
Full name |
Полное имя |
Сергей Петрович Иванов |
|
sn (SurName) |
Last name |
Фамилия |
Иванов |
|
displayName |
Display Name |
Выводимое имя |
Сергей Петрович Иванов |
|
|
|
Электронная почта |
|
|
sAMAccountName |
User logon name (pre-Windows 2000) |
Имя входа пользователя (пред-Windows 2000) |
IvanovSP |
|
userPrincipalName |
User logon name |
Имя входа пользователя |
|
|
memberOf |
Member Of |
Член групп (в какую группу входит данный пользователь) |
CN=Группа,OU=Компания, |
Добавление маппера
Как мы уже сказали, маппер group-ldap-mapper автоматически не добавляется при подключении к LDAP провайдеру, его необходимо добавить. На его примере мы продемонстрируем, как добавлять мапперы:
- Выберите созданный LDAP провайдер в окне User federation:
- В открывшемся окне перейдите на вкладку Mappers и нажмите Add mapper:
- В открывшейся форме укажите следующие параметры и нажмите Save:
Созданный маппер появится в списке мапперов.
Набор настроек завит от выбранного типа маппера. Более подробную информацию о мапперах см. в документации Keycloak.
Синхронизация пользователей
После настройки мапперов необходимо синхронизировать пользователей, чтобы данные всех пользователей попали в Keycloak. Для этого необходимо в разделе User federation нажать Action в правом верхнем углу и выбрать Sync all users в выпадающем меню:
После синхронизации, пользователи Active Directory смогут входить в Visiology с использованием своего пароля и логина.
Вы можете также активировать автоматическую синхронизацию, указав необходимый временной период в настройках синхронизации LDAP провайдера.
Особенности интеграции
- Важно отметить, что если пользователь принадлежит к группе с ролью Зритель, ему можно в индивидуальном порядке назначить роль Администратор, и он получит полный доступ к платформе независимо от того, что он принадлежит к группе с ограниченным доступом. Если у пользователя роль Зритель, а его добавят в группу с ролью Администратор, то он также получит полный доступ к платформе.
-
При переносе LDAP-групп в Keycloak иерархия групп не сохраняется. Группы попадают в Visiology “плоским списком”. Это означает, что если пользователь принадлежит к какой-либо подгруппе в Active Directory, то в Visiology он будет принадлежать к обеим группам (родительской и дочерней). Данное поведение регулируется в Keycloak в настройках маппера
group-ldap-mapper:
Пользователь, удаленный в Active Directory, удаляется в Keycloak после синхронизации пользователей.
Права доступа (роли) назначаются пользователям и группам на платформе Visiology.
RLS на данный момент отсутствует.
















