Пользователи
В «1С:Шине» пользователи не привязаны к приложению, один и тот же пользователь может быть подключен сразу к нескольким приложениям. С точки зрения разработчика приложений и с точки зрения внешних систем пользователями управляет сервер.
Пользователем может являться как человек, который взаимодействует с приложением через клиентское приложение, так и информационная система, которая взаимодействует с приложением через программный интерфейс. Для целей администрирования пользователи объединяются в списки пользователей, причем каждый пользователь может входить в единственный список.
- Списки пользователей
- Самостоятельная регистрация
- Подтверждение учетных данных пользователя
- Логин и пароль
- Сервисы внешних учетных записей
- Аутентификация CAS
- Аутентификация Active Directory
- Аутентификация ЕСИА
- Двухфакторная аутентификация
- Пользователь — информационная система
- Последовательность аутентификации и входа в приложение
Средства встроенного языка для управления пользователями
Встроенный язык содержит несколько типов, которые позволяют управлять пользователями.
- СпискиПользователей
- Тип-одиночка, который позволяет из приложения управлять списками пользователей. Методы разделяются на две группы: выполняющие манипуляции списками через сервер и работающие с текущим приложением без обращения к серверу
- СписокПользователей
- Позволяет настроить список пользователей. Экземпляры типа СписокПользователей можно получить, например,
методами:
- СпискиПользователей.Найти()
- СпискиПользователей.Создать()
- СпискиПользователей.ПолучитьСписокПоУмолчанию()
- ПользователиСервиса
- Тип-одиночка, который позволяет из приложения управлять пользователями. Предназначен для работы с сервером
Пример создания пользователя
В этом примере создается пользователь, который сможет входить через Windows-аутентификацию (Active Directory) , а затем этот пользователь подключается к приложению.
пер ПредставлениеПользователя = "НовыйПользователь"
пер ЛогинAD = "AD_login"
знч СписокПользователей = СпискиПользователей.ПолучитьСписокПоУмолчанию()
пер Описание = новый ОписаниеПользователя(СписокПользователей.Ид, ПредставлениеПользователя)
если не ЛогинAD.Пусто()
пер СервисAD = новый СервисУчетныхЗаписей(
ВидСервисаУчетныхЗаписей.ActiveDirectory, "AD_ID"
)
Описание = Описание.СУчетнымиЗаписями(
{новый УчетнаяЗапись(ЛогинAD, СервисAD)}
)
;
// Описание сразу содержит идентификатор, с которым будет создан пользователь сервиса.
ПользователиСервиса.Создать(Описание)
// Обратите внимание! Если между созданием пользователя и подключением
// (в том числе в процессе подключения) произойдет исключение,
// то пользователь будет создан в сервисе, но не будет подключен к приложению.
// При повторном выполнении приведенный здесь код выдаст ошибку,
// т.к. нельзя иметь двух пользователей, подключенных к одному и тому же
// логину Active Directory.
// Поэтому в реальной жизни следует использвать один из вариантов:
// Вариант 1 — задавать заранее логин и проверять, что пользователь
// с таким логином не существует. Если существует, то подключать в приложение.
// Найти пользователя по логину можно с помощью метода
// ПользователиСервиса.НайтиПоЛогину(Логин, ИдСпискаПользователей)
// Вариант 2 — не создавать пользователя сервиса автоматически,
// а предлагать администратору выбрать из существующих.
пер ПользовательПриложения = Пользователи.Подключить(Описание.Ид)