[ELMA3] Создание собственного модуля авторизации в системе ELMA версии 3.11 и выше
Общая информация
Начиная с версии ELMA 3.11, была изменена работа сервиса управления учетными записями пользователей. Вместо провайдеров авторизации были введены модули авторизации. Подробнее в статье "Изменение работы сервиса управления учетными записями пользователей в версии 3.11".
На текущий момент в системе реализованы два модуля авторизации: LDAP и Active Directory.
Кроме того, возможно написание своего модуля авторизации, реализующего собственную логику.
Случаи, в которых необходимо создавать собственный модуль авторизации:
- требуется изменить логику уже существующей реализации для интеграции с LDAP или Active Directory (например, Вам нужно импортировать дополнительные поля c сервера LDAP такие, как номер телефона или номер комнаты);
- нужно добавить поддержку других систем авторизации, отличных от LDAP.
Следует отметить, что для работы с несколькими серверами LDAP одновременно собственный модуль авторизации создавать не нужно. В данном случае достаточно в веб-приложении в разделе Администрирование – Система – Внешние модули авторизации создать еще один экземпляр настроек подключения к LDAP-серверу.
Как создать собственный модуль авторизации
Перед началом создания собственного модуля авторизации ознакомьтесь со статьями по разработке:
1. Создать серверный модуль и, реализовать в нем два класса:
- класс настроек;
- класс, в котором описаны логика работы модуля авторизации. Пример модуля приложен к статье. В примере реализована интеграция с LDAP сервером.
2. Создать веб-модуль. Веб-модуль нужен для отображения и управления настройками модуля в веб-приложении системы.
Описание модуля
Серверная часть
Обязательные классы, которые должны быть реализованы в Вашем модуле:
1. Реализация абстрактного класса ExternalMembershipModuleSettings. Описывает настройки модуля.
Обязательные для реализации свойства данного класса:
- Name – отображаемое имя;
- ModuleUid – идентификатор модуля авторизации, он должен быть уникальным.
2. Реализация абстрактного класса ExternalMembershipModule<TS> where TS :ExternalMembershipModuleSettings. Описывает логику, подключение, поиск и синхронизацию пользователей.
Обязательные для реализации свойства данного класса:
- Uid – уникальный номер модуля;
- Name – отображаемое имя;
- Description – описание.
Обязательные для реализации методы данного класса:
- FindUsers – поиск пользователей по подстроке;
- Sync – синхронизировать данные о пользователе при импорте пользователя;
- ValidateUser – проверить авторизацию пользователя.
Если Вам нужны настройки по умолчанию для Вашего нового модуля, то реализуйте метод:
CreateDefaultSettings
Пример реализации свойств:
public override Guid ModuleUid
{
get
{
if (moduleUid == null)
moduleUid = Locator.GetServiceNotNull<LdapExternalMembershipModule>().Uid;
return moduleUid.Value;
}
}
Пример собственного модуль авторизации
В качестве примера для создания собственного модуля авторизации можно использовать приложенный в архиве исходный код проекта авторизации с сервером LDAP.
Следует отметить, что функционал модуля в примере упрощен по сравнению с коробочной версией, а также по сравнению с коробочной версией дополнительно импортируется телефонный номер пользователя.