Внешняя авторизация

Внешняя авторизация

Так как Keycloak, используемый платформой Visiology, имеет встроенную поддержку для подключения к существующим серверам LDAP или Active Directory и поддерживает OpenID Connect, OAuth 2.0 и SAML, администраторы могут существенно упростить процесс администрирования пользователей и групп.

Рассмотрим в качестве примера интеграцию с Active Directory, которая позволяет автоматизировать процесс создания учетных записей пользователей и назначение им прав доступа посредством мапирования групп Active Directory на роли в Visiology.

Процедура интеграции включает в себя:

  • настройку подключения к LDAP провайдеру в Keycloak;

  • настройку мапперов для корректного извлечения атрибутов импортируемых пользователей;

  • синхронизацию пользователей.

Настройка подключения к LDAP провайдеру

Для настройки подключения необходимо выполнить следующие шаги:

  1. Откройте Keycloak, введя в адресную строку браузера
    <domain>/v3/keycloak/admin/Visiology/console/
    где <domain> – IP адрес или доменное имя вашего сервера.

  2. Нажмите Федерация пользователей в боковой панели и выберите Add provider в окне справа:

    user-federation.png
  3. В открывшейся форме укажите параметры подключения и нажмите Сохранить. Все обязательные поля, помеченные красной звездочкой, должны быть заполнены. Например:

    ldap-settings.png

    После заполнения полей вы можете протестировать соединение нажав на кнопки Тест соединения и Проверка аутентификации. Если параметры указаны без ошибок, в правом верхнем углу вы увидите сообщение о том, что соединение прошло успешно:

     

Если вы не хотите извлекать данные всех пользователей, зарегистрированных на домене, вы можете указать определенную группу пользователей. Для этого необходимо в секции LDAP searching and updating настроек LDAP провайдера указать данную группу. Сделать это можно так: OU=Acme, где OU – подразделение (Organizational Unit), а Acme – название группы:

Настройка мапперов

При создании LDAP провайдера автоматически создается необходимая группа мапперов (за исключением group-ldap-mapper), которые содержат в себе атрибуты пользователей. Вы можете отредактировать как отредактировать их, так и создать новые мапперы для передачи дополнительных атрибутов пользователей.

Редактирование маппера

Для изменения параметров маппера выполните следующие шаги:

  1. Щелкните на созданный LDAP провайдер в окне Федерация пользователей:

    ldap-in-uf.png

     

  2. В открывшемся окне перейдите на вкладку Сопоставления и выберите маппер, который хотите отредактировать:

    ldap-mapping.png

     

  3. Обновите требуемые параметры. Для извлечения пользовательских атрибутов используются специальные Active Directory атрибуты (см. таблицу основных пользовательских атрибутов ниже). В нашем примере мы укажем givenName в поле LDAP Attribute для извлечения имени пользователя:

    first-name.png

     

ТАБЛИЦА ОСНОВНЫХ ПОЛЬЗОВАТЕЛЬСКИХ АТРИБУТОВ ACTIVE DIRECTORY

Атрибут

Англоязычное название

Русскоязычное название

Пример

Подразделение (OU – Organizational Unit)

distinguishedName

 Distinguished Name

 Отличительное (уникальное) имя

OU=Компания,DC=domain,DC=com

name

 

 

Компания

Группа

distinguishedName

 Distinguished Name

Отличительное (уникальное) имя

CN=Группа,OU=Компания,DC=domain,DC=com

name

 

 

Группа

member

Members

Члены группы (какие пользователи входят в данную группу)

CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com

Пользователь

DN

Distinguished Name

Отличительное (уникальное) имя

CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com

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

Выводимое имя

Сергей Петрович Иванов

mail

E-mail

Электронная почта

mail@domain.com

sAMAccountName

User logon name (pre-Windows 2000)

Имя входа пользователя (пред-Windows 2000)

IvanovSP

userPrincipalName

User logon name

Имя входа пользователя

IvanovSP@domain.com

memberOf

Member Of

Член групп (в какую группу входит данный пользователь)

CN=Группа,OU=Компания,DC=domain,DC=com

Добавление маппера

Как мы уже сказали, маппер group-ldap-mapper автоматически не добавляется при подключении к LDAP провайдеру, его необходимо добавить. На его примере мы продемонстрируем, как добавлять мапперы:

  1. Выберите созданный LDAP провайдер в окне Федерация пользователей:

    ldap-in-uf.png

     

  2. В открывшемся окне перейдите на вкладку Сопоставления и нажмите Add mapper:

    add-mapper.png
  3. В открывшемся окне укажите наименование шаблона клиента и укажите тип сопоставления из выпадающего меню:

    new-mapper.png
  4. В открывшейся форме укажите следующие параметры и нажмите Сохранить:

    new-mapper-settings.png

    Созданный маппер появится в списке мапперов.

Набор настроек завит от выбранного типа маппера. Более подробную информацию о мапперах см. в документации Keycloak.

Синхронизация пользователей

После настройки мапперов необходимо синхронизировать пользователей, чтобы данные всех пользователей попали в Keycloak. Для этого необходимо в разделе Федерация пользователей нажать Действие в правом верхнем углу и выбрать Sync all users в выпадающем меню:

synch-users.png

После синхронизации, пользователи Active Directory смогут входить в Visiology с использованием своего пароля и логина.

Вы можете также активировать автоматическую синхронизацию, указав необходимый временной период в настройках синхронизации LDAP провайдера.

Особенности интеграции

  • Важно отметить, что если пользователь принадлежит к группе с ролью Зритель, ему можно в индивидуальном порядке назначить роль Администратор, и он получит полный доступ к платформе независимо от того, что он принадлежит к группе с ограниченным доступом. Если у пользователя роль Зритель, а его добавят в группу с ролью Администратор, то он также получит полный доступ к платформе.

  • При переносе LDAP-групп в Keycloak иерархия групп не сохраняется. Группы попадают в Visiology “плоским списком”. Это означает, что если пользователь принадлежит к какой-либо подгруппе в Active Directory, то в Visiology он будет принадлежать к обеим группам (родительской и дочерней). Данное поведение регулируется в Keycloak в настройках маппера group-ldap-mapper:

Пользователь, удаленный в Active Directory, удаляется в Keycloak после синхронизации пользователей.

Права доступа (роли) назначаются пользователям и группам на платформе Visiology. Чтобы узнать, как назначить роли, перейдите в раздел Назначение прав доступа (роли).

Добавление сертификата безопасности в TrustStore контейнера Keycloak

  1. Выполните следующие команды:

    • KCID=$(docker ps -f name="visiology3_keycloak" -q)

    • docker cp cert.crt $KCID:/opt/keycloak/bin

    • docker exec -it $KCID bash

  2. Перейдите в папку /opt/keycloak/bin и выполните следующую команду:
    keytool -import -keystore ldaps.jks -file cert.crt
    В процессе выполнения нужно будет ввести пароль, который понадобится ниже. После ввода пароля необходимо прописать слово yes.

  3. Переместите получившийся файл ldaps.jks в папку certs :
    docker cp $KCID:/opt/keycloak/bin/ldaps.jks /var/lib/visiology/certs/ldaps.jks

  4. Создайте файл 05-kc-cert.yml в папке /var/lib/visiology/scripts/v3/extended-services. Файл должен содержать следующие строки:

    version: "3.8" services: keycloak:  environment:    KC_SPI_TRUSTSTORE_FILE_FILE: /opt/keycloak/bin/ldaps.jks    KC_SPI_TRUSTSTORE_FILE_PASSWORD: парольКоторыйВыУказывали  volumes:    - /var/lib/visiology/certs/ldaps.jks:/opt/keycloak/bin/ldaps.jks:ro
  5. Перезапустите платформу.


Смотрите также

Создание, редактирование и удаление пользователей