Операции самообслуживания
Администратор приложения может предоставить авторизованному пользователю возможность самостоятельно менять настройки учетной записи. Поддерживаются такие операции самообслуживания, как:
- изменение пароля,
- подтверждение измененного контакта,
- добавление нового контакта,
- добавление и удаление учетной записи.
Чтобы повысить уровень безопасности, дополнительно подтверждаются отправкой кода все операции, кроме:
- добавления учетной записи,
- изменения пароля в случае, если у пользователя нет контакта и нет способа его задать (т. е. не настроены шлюзы).
Все необходимые изменения пользователь может выполнять на странице самообслуживания, доступной по адресу путь-к-приложению/self-service
:
Алгоритм выполнения операций самообслуживания
Вы также можете реализовать свой сценарий использования этих операций. Выполнение операций происходит по следующему алгоритму:
- Пользователь инициирует процесс выполнения операции (например, нажатием на кнопку в форме).
- Приложение проверяет данные и в случае успеха отправляет код подтверждения через сервис отправки кодов.
- Пользователь получает код и каким-либо образом передает его приложению (например, вводит в поле ввода).
- Приложение проверяет код и в зависимости от результата предлагает отправить код повторно через определенный временной интервал или подтверждает выполняемую операцию.
Самостоятельное изменение пароля доступно только авторизованному пользователю. Если пользователь забыл пароль, он воспользуется функцией восстановления пароля.
Объектная модель для реализации самообслуживания пользователей
Для реализации операций самообслуживания пользователей используются типы пространства имен Стд::Пользователи::Самообслуживание
.
ОперацииСамообслуживания
Тип ОперацииСамообслуживания
доступен через одноименное свойство глобального контекста. С помощью его методов ДобавлениеУчетнойЗаписи()
и УдалениеУчетнойЗаписи()
вы можете добавить и удалить способы аутентификации:
ОперацияСамообслуживания.ДобавлениеУчетнойЗаписи(): ОперацияДобавленияУчетнойЗаписи
ОперацияСамообслуживания.УдалениеУчетнойЗаписи(): ОперацияУдаленияУчетнойЗаписи
С помощью методов ДобавлениеКонтакта()
и ПодтверждениеКонтакта()
можно добавить и подтвердить контакт текущего пользователя:
ОперацияСамообслуживания.ДобавлениеКонтакта(): ОперацияДобавленияКонтакта
ОперацияСамообслуживания.ПодтверждениеКонтакта(): ОперацияПодтвержденияКонтакта
Метод ИзменениеПароля()
позволяет изменить пароль:
ОперацияСамообслуживания.ИзменениеПароля(): ОперацияИзмененияПароля
ОперацияДобавленияУчетнойЗаписи
Чтобы добавить учетную запись пользователя, для объекта типа ОперацияДобавленияУчетнойЗаписи
вызывается метод Выполнить()
с поставщиком аутентификации, указанном в параметре.
ОперацияУдаленияУчетнойЗаписи, ОперацияДобавленияКонтакта, ОперацияПодтвержденияКонтакта, ОперацияИзмененияПароля
Для объектов типов ОперацияУдаленияУчетнойЗаписи
, ОперацияДобавленияКонтакта
, ОперацияПодтвержденияКонтакта
, ОперацияИзмененияПароля
доступны следующие методы:
-
Начать()
— создает операцию. Принимает параметры, соответствующие операции. Например,ОперацияИзмененияПароля.Начать()
принимает два параметра типаСтрока
:СтарыйПароль
иНовыйПароль
.пер СтатусОперации = ОперацииСамообслуживания.ИзменениеПароля()
.Начать("СтарыйПароль", "НовыйПароль")А метод
ОперацияПодтвержденияКонтакта.Начать()
принимает параметрыВидКонтакта
, который задает вид подтверждаемого контакта, иСпособПодтверждения
, который задает способ подтверждения операции самообслуживания. Э ти параметры должны соответствовать друг другу, иначе выбрасывается исключение:-
ВидКонтактаПользователя.Телефон
—СпособПодтвержденияОперации.СМС
, -
ВидКонтактаПользователя.Почта
—СпособПодтвержденияОперации.Почта
.пер СтатусОперации = ОперацииСамообслуживания.ПодтверждениеКонтакта()
.Начать(ВидКонтактаПользователя.Почта,
СпособПодтвержденияОперации.Почта)
примечаниеРекомендуется создавать операцию изменения пароля только тогда, когда вы уверены, что пользователь готов начать процесс изменения пароля (когда пользователь сам инициирует процесс), потому что при успешном вызове метода
Начать()
пользователю сразу же отправляется код подтверждения. -
-
ПовторитьОтправкуКодаПодтверждения()
— повторяет отправку кода подтверждения, если не превышено количество попыток отправки.пер СтатусОперации = ОперацииСамообслуживания.ИзменениеПароля()
.ПовторитьОтправкуКодаПодтверждения()примечаниеМожно затребовать отправку кода не более 5 раз. После пятой попытки отправка кодов блокируется на 24 часа. Зарегистрировать пользователя с заблокированным контактом нельзя.
Если в момент вызова метода операция уже завершена, выбрасывается исключение
ИсключениеНедопустимоеСостояние
. -
Подтвердить()
— подтверждает операцию кодом из СМС или электронного письма. В качестве параметра принимает код подтверждения типаСтрока
.пер СтатусОперации = ОперацииСамообслуживания.ПодтверждениеКонтакта()
.Подтвердить(Код)Если операция завершена, выбрасывается исключение
ИсключениеНедопустимоеСостояние
.
СтатусПодтверждаемойОперацииСамообслуживания
Все методы операций возвращают объект типа СтатусПодтверждаемойОперацииСамообслуживания
, описывающий результат операции. Объект этого типа имеет следующие свойства:
МожноПереотправить
— признак того, что код подтверждения можно отправить повторно.МоментПовторнойОтправкиКода
— момент времени, начиная с которого можно повторно отправить код подтверждения.ОставшиесяПопытки
— оставшееся количество попыток отправки кода подтверждения.СпособПодтверждения
— способ подтверждения операции в текущем состоянии. Может принимать следующие значения:
А также свойства, унаследованные от родительского типа СтатусОперацииСамообслуживания
:
Шаг
— текущий шаг операции.ПредыдущийШагУспешен
— признак того, что предыдущий шаг завершился успешно.Сообщение
— описание ошибки при неуспешном выполнении операции.
если СтатусОперации.Шаг != ШагОперацииСамообслуживания.ЗавершеноУспешно
ВыброситьИсключениеИсполнения(СтатусОперации.Сообщение)
;
ШагОперацииСамообслуживания
Текущий шаг операции самообслуживания описывается элементами типа ШагОперацииСамообслуживания
:
ЗавершеноУспешно
,З авершеноНеуспешно
,ПовторнаяОтправкаКода
,Подтверждено
,ПодтверждениеКодомИзСмс
,ПодтверждениеКодомИзПисьма
.
Самообслуживание на мобильных устройствах
С помощью операций самообслуживания для мобильных устройств вы можете:
- добавлять текущее мобильное устройство, с которого выполняется вход, в список доверенных устройств;
- получать список доверенных мобильных устройств;
- добавлять текущее устройство в список мобильных устройств, с которых можно выполнить вход, используя ПИН-код или биометрию (если поддерживается устройством);
- отключать использование биометрии, если она включена;
- удалять мобильные устройства из списка доверенных устройств (например, если пользователь потерял или поменял устройство).
Типы встроенного языка для реализации самообслуживания на мобильных устройствах
Список идентификаторов и описаний доверенных устройств содержится в типе ОписаниеПоль зователяСервиса
в свойстве ДоверенныеУстройства
.
Доверенные устройства описывает тип Пользователи.ДоверенноеУстройствоПользователя
. Он содержит следующие свойства:
Ид
— уникальный идентификатор;Описание
— описание устройства (обычно это модель телефона/устройства);ВидПлатформы
— вид операционной системы, используемой на устройстве;ИспользуетсяБиометрия
— флаг, показывающий, используется ли биометрия на устройстве (значение определяется только по наличию публичного ключа для биометрии без учета значения свойстваКлиентскоеУстройство.ДоступнаБиометрия
);ИспользуетсяПинКод
— флаг, показывающий, установлен ли ПИН-код на устройстве (определяется по наличию публичного ключа для ПИН-кода).
Чтобы разрешить использование биометрии на устройстве, используйте свойство ДоступнаБиометрия
типа КлиентскоеУстройство
.
Чтобы добавить или удалить устройство, изменить его ПИН-код, добавить или удалить биометрические данные для устройства создаются соответствующие операции:
-
ОперацияДобавленияДоверенногоУстройства
— операция добавления доверенного устройства для текущего пользователя. Создается с помощью методаОперацииСамообслуживания.ДобавлениеДоверенногоУстройства()
. -
ОперацияУдаленияДоверенногоУстройства
— операция удаления доверенного устройства для текущего пользователя. Создается с помощью методаОперацииСамообслуживания.УдалениеДоверенногоУстройства()
. -
ОперацияИзмененияПинКодаДоверенногоУстройства
— операция изменения ПИН-кода для текущего доверенного устройства и текущего пользователя. Создается с помощью методаОперацииСамообслуживания.ИзменениеПинКодаДоверенногоУстройства()
.Если пользователь 5 раз вводит неверный ПИН-код, операция завершается с результатом
ЗавершеноНеуспешно
и возможность изменения ПИН-кода блокируется до повторной авторизации в приложении другим способом (например, с помощью логина и пароля или через сторонний сервис). При этом возможность работы с приложением остается. -
ОперацияДобавлени яБиометрииДоверенногоУстройства
— операция включения биометрии для доверенного устройства и текущего пользователя. Создается с помощью методаОперацииСамообслуживания.ДобавлениеБиометрииДоверенногоУстройства()
. -
ОперацияУдаленияБиометрииДоверенногоУстройства()
— операция выключения биометрии для доверенного устройства и текущего пользователя. Создается с помощью методаОперацииСамообслуживания.УдалениеБиометрииДоверенногоУстройства()
.
Все операции выполняются с помощью методов Выполнить()
.
метод ДобавитьТекущееУстройствоВСписокДоверенныхУстройств(Источник: Кнопка, Событие: СобытиеПриНажатии)
пер ОперацияДобавления = ОперацииСамообслуживания.ДобавлениеДоверенногоУстройства()
пер СтатусОперации = ОперацияДобавления.Выполнить()
ОбработкаСтатусаОперации(СтатусОперации)
;
метод ОбработкаСтатусаОперации(СтатусОперации: СтатусОперацииСамообслуживания)
если СтатусОперации.Шаг == ШагОперацииСамообслуживания.ЗавершеноУспешно
// Обработка события при добавлении устройства
иначе
выбросить новый ИсключениеВыполнения(СтатусОперации.Сообщение)
;
;
Пример экрана входа для мобильного устройства: