Перейти к содержимому

Двухфакторная аутентификация 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

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

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

  2. Серверная 8.3.18.1208, файловая 8.3.19.1150.
    Этот момент не проверял. Через postman не пробовал.
    На win все работает. На macos такая картинка
    http://joxi.ru/nAybXx7sg6Zg6r
    Чисто логически это какое-то сообщение… и вот дальше не идет.

  3. Спасибо, как раз разбираюсь с технологическим журналом. В ЖР нет ничего полезного.

  4. А если будет нужно будет отказаться от двухфакторной аутентификации? Просто удаление профиля уже не помогает.

  5. Напрашивается и такой вопрос!

    Например, злоумышленник на удачу, завладев паролем, и не имея сотового телефона клиента, начнет на удачу подбирать код. Вопрос, как обнаружить и заблокировать возможность подбора, скажем на час? Каков иной способ противодействия?

    Да, и в крупную сумму, такой подбор кода может вылиться.

    1. А если использовать в конфигураторе «Главное меню ‑ Администрирование ‑ Параметры информационной базы», параметр «Максимальное количество неуспешных попыток аутентификации»?

      1. «6.6. Параметры информационной базы» https://its.1c.ru/db/v8319doc#bookmark:adm:TI000000136
      2. «6.4.2. Автоматически, при попытке подбора пароля» https://its.1c.ru/db/v8319doc#bookmark:adm:TI000000994

  6. Здравствуйте. Не могу понять двух моментов:
    1. После добавления шаблона пользователю, при попытке входа под ним получаю: «Не действительный адрес запроса дополнительной проверки доступа…» (использую в качестве ресурса адрес отправки через телеграм-бот)?
    2. Чем данные возможности 2ФА платформы технически отличаются (или мб дополняют) от опции 1С «Аутентификация токеном доступа», которая была добавлена в пользователя ИБ, начиная с версии платформы 8.3.21?

    1. Столкнулась с такой же проблемой, помогло вот что: попробуйте токен бота кодировать в url, чтобы спецсимволы также кодировались (или просто «:» заменить на «%3A»)

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

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