Пример реализации двухфакторной авторизации на 1С 8.3.21



&НаСервере

Процедура СозданиеШаблонаНастроекВторогоФактораАутентификации() // кнопка в обработке



ШаблонНастроек = ШаблоныНастроекВторогоФактораАутентификации.СоздатьШаблон();



ЗапросHTTP = Новый HTTPЗапрос;

ЗапросHTTP.АдресРесурса = "&host"; //в этот параметр на следующем шаге запишется адрес куда отправлять HTTP запрос

ЗапросHTTP.УстановитьТелоИзСтроки("Ваш код &secret","utf-8"); //тут можно изменить текстовку, обязательно ставим кодировку



ШаблонНастроек.HTTPЗапросНаАутентификацию = ЗапросHTTP;

ШаблонНастроек.МетодHTTPЗапросаНаАутентификацию = "POST"; //тут или GET, или POST,

//я в дальнейшем буду запрашивать пароли через POST

ШаблонНастроек.Имя = "ИмяШаблона"; //задаем имя шаблона, который используем в дальнейшем для назначения пользователю



ШаблонНастроек.Записать();



// Ставим галочку в конфигураторе у пользователя

// (Администрирование->Пользователи->ищем кому поставить) "Аутентификация токеном доступа"



КонецПроцедуры



&НаСервере

Процедура НазначениеШаблонаВторогоФактораАутентификации()



Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("ИмяПользователя"); //ИмяПользователя - меняем на имя пользователя

НастройкаВФА = Новый НастройкаВторогоФактораАутентификации;

НастройкаВФА.ИмяШаблонаНастройки = "ИмяШаблона"; //Имя шаблона задавали на 1-ом этапе



ПараметрыНастройки = Новый Соответствие;

ПараметрыНастройки.Вставить("host","http://"127.0.0.1/otpavkod/hs/sendpass/?tel=123456789"); //Задаем адрес на который будет отправлен HTTP Запрос с кодом для авторизации

НастройкаВФА.Параметры = ПараметрыНастройки; //Задаем значение настройки



МассивНастроек = Новый Массив;

МассивНастроек.Добавить(НастройкаВФА); //задаем массив настроек, тут важно, что это массив, а значит можно указать несколько настроек аутентификации



Пользователь.НастройкиВторогоФактораАутентификации = МассивНастроек; //Устанавливаем настройки пользователю

Пользователь.ОбработкаНастроекВторогоФактораАутентификации = ТипОбработкиНастроекВторогоФактораАутентификации.ИспользоватьСледующуюПриОшибке; //что делать при некорректном вводе кода

Пользователь.Записать();



КонецПроцедуры






✍️ @odin1C_rus