logo

[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

Внимание!
Значение свойства ModuleUid класса настроек ExternalMembershipModuleSettings и свойства Uid класса ExternalMembershipModule, описывающего логику модуля, должны быть одинаковыми.

Пример реализации свойств:

public override Guid ModuleUid

               {

               get

               {

              if (moduleUid == null)

                              moduleUid = Locator.GetServiceNotNull<LdapExternalMembershipModule>().Uid;

              return moduleUid.Value;

               }

               }

Пример собственного модуль авторизации

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

Следует отметить, что функционал модуля в примере упрощен по сравнению с коробочной версией, а также по сравнению с коробочной версией дополнительно импортируется телефонный номер пользователя.

Прикрепленные файлы