Двухфакторная аутентификация 1С

Двухфакторная аутентификация 1С

Двухфакторная аутентификация 1С – это способ, позволяющий, с одной стороны, усложнить злоумышленникам доступ к чужим данным, а с другой стороны ‑ это решение, которое позволяет в какой-то степени нивелировать недостатки классической парольной защиты.

В данной заметке, будут рассмотрены способы использования механизма двойной аутентификация, так как это один из важнейших аспектов информационной безопасности в 1С.

Как работает двухфакторная аутентификация 1С — Для того, чтобы получить доступ, пользователь должен дважды подтвердить тот факт, что он – это он, причем, разными способами. Например, ввести логин и пароль (первый фактор аутентификации), а затем ввести код, присланный на его мобильный телефон (второй фактор аутентификации). Метод двухфакторной аутентификации в 1С доступен с версии платформы 8.3.15.1489.

Для работы с двухфакторной аутентификацией в 1С используются «ШаблоныНастроекВторогоФактораАутентификации» – которые служат для описания HTTP-запроса, который следует отправить провайдеру. Это может быть база 1С, в которой реализованы HTTP-сервисы, позволяющие пересылать сообщения или выполнять аутентификацию. Сторонний сервис, пересылающий сообщения по СМС или электронной почте, это может быть сервис, генерирующий коды второго фактора аутентификации или сервис, взаимодействующий с пользователем через собственное мобильное приложение, и так далее.

Имеет два варианта реализации:

  • «Простой провайдер» — провайдеры которые могут только передать фиксированное сообщение пользователю, например, с помощью СМС.
  • «Умный провайдер» — Провайдер самостоятельно выполняет аутентификацию второго фактора, а платформа ожидает сигнала от пользователя, чтобы запросить у провайдера результат этой аутентификации.

В качестве исходной базы будет использоваться «Демонстрационная конфигурация «Управляемое приложение» Версия 1.0.32.4», весь код будет реализован во внешней обработке. В качестве «простого» провайдера выбран сервис «sms.ru».

Получить существующие шаблоны аутентификации

Сначала, проверим существуют ли в системе ранее созданные шаблоны. Для этого, на форму внешней обработки добавлена команда «ПолучитьШаблоныАутентификации», со следующей реализацией:

&НаСервере
Процедура ПолучитьШаблоныАутентификацииНаСервере()

	ШаблоныАутентификации = ШаблоныНастроекВторогоФактораАутентификации.ПолучитьШаблоны();	
	
	ЖурналСообщений.ДобавитьСтроку("Количество шаблонов аутентификации: " 
		+ ШаблоныАутентификации.Количество());
	
	Для каждого ШаблонАутентификации Из ШаблоныАутентификации Цикл
		
		ЖурналСообщений.ДобавитьСтроку("Имя шаблона: " + ШаблонАутентификации.Имя);
	
	КонецЦикла;
	
КонецПроцедуры

Создание шаблона аутентификации

Для последующей работы, создадим собственный шаблон аутентификации, использующий метод «GET» и HTTP запрос, где секретный код &secret будет передаваться в переменных запроса. Для этого, на форму внешней обработки добавлена команда «СоздатьШаблонАутентификации», со следующей реализацией:

&НаСервере
Процедура СоздатьШаблонАутентификацииНаСервере()
	
	ТестовыйШаблон = ШаблоныНастроекВторогоФактораАутентификации.НайтиПоИмени("Тестовый шаблон");
	Если НЕ ТестовыйШаблон = Неопределено Тогда
		ЖурналСообщений.ДобавитьСтроку("Отмена создания, тестовый шаблон уже существует.");
		Возврат;
	КонецЕсли;
	
	HTTPЗапрос = Новый HTTPЗапрос;
	HTTPЗапрос.АдресРесурса = "&address";
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "text/plain; charset=utf-8");
	
	ШаблонНастроекАутентификации = ШаблоныНастроекВторогоФактораАутентификации.СоздатьШаблон();
	ШаблонНастроекАутентификации.Имя = "Тестовый шаблон";
	ШаблонНастроекАутентификации.HTTPЗапросНаАутентификацию = HTTPЗапрос;
	ШаблонНастроекАутентификации.МетодHTTPЗапросаНаАутентификацию = "GET";
	
	ШаблонНастроекАутентификации.Записать();
	
КонецПроцедуры

Добавление шаблона пользователю

После создание шаблона аутентификации, его необходимо добавить пользователю информационной базы. Делается это с помощью объекта «НастройкаВторогоФактораАутентификации» и свойств пользователя «НастройкиВторогоФактораАутентификации» и «ОбработкаНастроекВторогоФактораАутентификации».
Именно с помощью объекта параметров «НастройкаВторогоФактораАутентификации», платформа будет знать откуда брать значения, которые подставляются вместо переменных в HTTP-запросах.

ИмяШаблонаНастройки ‑ имя шаблона провайдера второго фактора, которое было указано при создании шаблона провайдера.
Параметры ‑ Соответствие должно содержать столько элементов, сколько параметров содержится в шаблоне настройки провайдера второго фактора (за исключением параметра &secret).

Для реализации добавления шаблона, используется реквизит формы «АдресПровайдера» и команда «ДобавитьШаблонПользователю», со следующей реализацией:

&НаСервере
Процедура ДобавитьШаблонПользователюНаСервере()
	
	ПараметрыШаблонаНастроек = Новый Соответствие;
	ПараметрыШаблонаНастроек.Вставить("address", АдресПровайдера);
				
	НастройкаПользователя = Новый НастройкаВторогоФактораАутентификации;
	НастройкаПользователя.ИмяШаблонаНастройки = "Тестовый шаблон";
	НастройкаПользователя.Параметры = ПараметрыШаблонаНастроек;
	
	НастройкиАутентификации = Новый Массив;
	НастройкиАутентификации.Добавить(НастройкаПользователя);
	
	ПользовательПродавец = ПользователиИнформационнойБазы.НайтиПоИмени("Продавец");
	ПользовательПродавец.НастройкиВторогоФактораАутентификации = НастройкиАутентификации;
	ПользовательПродавец.ОбработкаНастроекВторогоФактораАутентификации = 
		ТипОбработкиНастроекВторогоФактораАутентификации.ИспользоватьСледующуюПриОшибке;
	ПользовательПродавец.Записать();
	
КонецПроцедуры

Тестирование двухфакторной аутентификации в 1С

После регистрации в сервисе «sms.ru» и пополнения счета, станет доступна отрывка СМС с помощью HTTP запроса. Для этого, в личном кабинете, на вкладке «Программистам» скопируйте пример, запроса и немного отредактируйте следующим образом:

https://sms.ru/sms/send?api_id= ВашApi_id&to=НомерПользователя&msg=Ваш+код:+&secret
Двухфакторная аутентификация 1С - API

Двухфакторная аутентификация 1С — API

Далее, необходимо нажать «Добавить шаблон пользователю», в результате чего, для пользователя «Продавец» будет включена двухфакторная аутентификация 1С:

Двухфакторная аутентификация 1С - Тест

Двухфакторная аутентификация 1С — Тест

💾 Внешняя обработка «УправлениеАутентификацией»

Источники информации:

Icons made by Flat Icons from www.flaticon.com

3 комментария для “Двухфакторная аутентификация 1С”

  1. Уведомление: Безопасность 1С - Благин Константин

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *