Двухфакторная аутентификация 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С:
💾 Внешняя обработка «УправлениеАутентификацией»
Источники информации:
- Заметки из Зазеркалья «Двухфакторная аутентификация»
- Руководство администратора Глава 6. Администрирование информационной базы
Уведомление: Безопасность 1С - Благин Константин
Сколько стоит отправка SMS?
Тарифы: https://sms.ru/price
Для тестирования, мне хватило бесплатных SMS в день.
Если сервер 1С находится во внутренней сети, тогда можно организовать локальный SMS шлюз, с подходящим тарифом.
На macos не работает, не появляеся окно для ввода пароля из СМС
— А версия платформы какая?
— Файловая или клиент-серверная база?
— Может быть файрволл блокирует запрос? Через Postman удается отправить запрос?
Серверная 8.3.18.1208, файловая 8.3.19.1150.
Этот момент не проверял. Через postman не пробовал.
На win все работает. На macos такая картинка
http://joxi.ru/nAybXx7sg6Zg6r
Чисто логически это какое-то сообщение… и вот дальше не идет.
Можно посмотреть журнал регистрации и/или логи технологического журнала.
Спасибо, как раз разбираюсь с технологическим журналом. В ЖР нет ничего полезного.
А если будет нужно будет отказаться от двухфакторной аутентификации? Просто удаление профиля уже не помогает.
Напрашивается и такой вопрос!
Например, злоумышленник на удачу, завладев паролем, и не имея сотового телефона клиента, начнет на удачу подбирать код. Вопрос, как обнаружить и заблокировать возможность подбора, скажем на час? Каков иной способ противодействия?
Да, и в крупную сумму, такой подбор кода может вылиться.
А если использовать в конфигураторе «Главное меню ‑ Администрирование ‑ Параметры информационной базы», параметр «Максимальное количество неуспешных попыток аутентификации»?
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
Здравствуйте. Не могу понять двух моментов:
1. После добавления шаблона пользователю, при попытке входа под ним получаю: «Не действительный адрес запроса дополнительной проверки доступа…» (использую в качестве ресурса адрес отправки через телеграм-бот)?
2. Чем данные возможности 2ФА платформы технически отличаются (или мб дополняют) от опции 1С «Аутентификация токеном доступа», которая была добавлена в пользователя ИБ, начиная с версии платформы 8.3.21?
Столкнулась с такой же проблемой, помогло вот что: попробуйте токен бота кодировать в url, чтобы спецсимволы также кодировались (или просто «:» заменить на «%3A»)