В современном мире, где безопасность данных становится одним из ключевых приоритетов, использование биометрических методов аутентификации, таких как сканеры отпечатков пальцев, приобретает все большее значение. Мобильные приложения 1С не являются исключением. Многие пользователи ожидают, что смогут подтверждать действия или получать доступ к конфиденциальной информации с помощью биометрии своего смартфона. Давайте подробно разберем, как реализовать такую возможность в мобильном приложении, разработанном на платформе 1С.
Основной вопрос, который нас интересует, заключается в следующем: можем ли мы получить данные с биометрического сканера отпечатков пальцев смартфона в мобильное приложение 1С и, если да, то каким образом? Ответ утвердительный, но с определенными нюансами: платформа 1С предоставляет механизм для запроса аутентификации через биометрический сканер, который возвращает результат Истина или Ложь (успех или неуспех), но не сами биометрические данные пользователя. Это принципиально важное отличие, поскольку обеспечивает конфиденциальность данных и соответствие стандартам безопасности.
Начиная с мобильной платформы 1С версии 8.3.15, разработчикам стала доступна прямая поддержка биометрической аутентификации. Это означает, что мы можем использовать встроенные механизмы платформы для взаимодействия со сканером отпечатков пальцев (или Face ID, Iris Scanner) смартфона, не прибегая к сложным сторонним интеграциям через запуск внешних приложений.
Ключевой механизм для работы с биометрией в 1С Мобильной платформе — это объект ДополнительнаяПроверкаПользователя.
Рассмотрим подробнее его особенности:
Объект глобального контекста: ДополнительнаяПроверкаПользователя является свойством глобального контекста мобильного приложения и доступен через МобильноеПриложениеКлиент.ДополнительнаяПроверкаПользователя. Мы не создаем его с помощью конструктора Новый МенеджерДополнительнойПроверкиПользователя(), а работаем непосредственно с уже существующим экземпляром.
Метод НачатьПроверку(): Для запуска биометрической проверки используется метод НачатьПроверку(). Этот метод инициирует системный запрос к пользователю на прохождение биометрической аутентификации. Он может принимать несколько параметров:
СпособДополнительнойПроверкиПользователя: Определяет предпочитаемый способ проверки. Наиболее часто используемый вариант — СпособДополнительнойПроверкиПользователя.БиометрическаяИлиВводПароля. Это позволяет системе сначала предложить пользователю пройти биометрическую проверку, а если она недоступна, не настроена или пользователь отказался, предоставить возможность ввести PIN-код или пароль устройства.
ЗаголовокПриглашения (необязательный): Текст, который будет отображен пользователю в системном диалоге запроса на аутентификацию. Например, "Подтвердите действие", "Разблокируйте доступ".
Результат проверки: Метод НачатьПроверку() возвращает значение типа ВариантРезультатаДополнительнойПроверкиПользователя. Мы должны проанализировать это значение, чтобы понять исход аутентификации:
ВариантРезультатаДополнительнойПроверкиПользователя.Успех: Аутентификация пройдена успешно.
ВариантРезультатаДополнительнойПроверкиПользователя.Отмена: Пользователь отменил проверку.
ВариантРезультатаДополнительнойПроверкиПользователя.Ошибка: Произошла ошибка во время проверки (например, слишком много неудачных попыток, биометрия не настроена или недоступна).
Проверка доступности: Перед тем как запускать проверку, мы можем убедиться, что биометрическая аутентификация вообще доступна на устройстве пользователя и настроена. Для этого используется метод ДоступнаБиометрическаяАутентификация(). Он возвращает Истина, если биометрия может быть использована, и Ложь в противном случае. Это позволяет нам адаптировать пользовательский интерфейс и предложить альтернативные методы аутентификации, если биометрия недоступна.
Посмотрим на пример кода, иллюстрирующий использование ДополнительнаяПроверкаПользователя:
// Процедура, вызываемая, например, при нажатии кнопки для подтверждения действия
&НаКлиенте
Процедура ПроверитьДействиеЧерезБиометрию()
// Сначала проверим, доступна ли биометрическая аутентификация на устройстве
Если МобильноеПриложениеКлиент.ДополнительнаяПроверкаПользователя.ДоступнаБиометрическаяАутентификация() Тогда
Сообщить("Запускаем биометрическую проверку...");
// Запускаем проверку, предлагая биометрию или PIN-код/пароль устройства
// Второй параметр - это заголовок для системного диалога аутентификации
РезультатПроверки = МобильноеПриложениеКлиент.ДополнительнаяПроверкаПользователя.НачатьПроверку(
СпособДополнительнойПроверкиПользователя.БиометрическаяИлиВводПароля,
"Для продолжения подтвердите операцию с помощью отпечатка пальца или PIN-кода устройства"
);
// Анализируем результат проверки
Если РезультатПроверки = ВариантРезультатаДополнительнойПроверкиПользователя.Успех Тогда
Сообщить("Биометрическая аутентификация успешно пройдена!");
// Здесь мы можем выполнить защищенное действие, к которому запрашивали доступ
ВыполнитьЗащищенноеДействие();
ИначеЕсли РезультатПроверки = ВариантРезультатаДополнительнойПроверкиПользователя.Отмена Тогда
Сообщить("Биометрическая аутентификация отменена пользователем.");
// Возможно, предложим альтернативный способ подтверждения или просто отменим операцию
Иначе // ВариантРезультатаДополнительнойПроверкиПользователя.Ошибка
Сообщить("Ошибка биометрической аутентификации. Пожалуйста, попробуйте еще раз или используйте другой способ.");
// Обрабатываем ошибку, информируем пользователя
КонецЕсли;
Иначе
Сообщить("Биометрическая аутентификация недоступна или не настроена на данном устройстве.");
// В этом случае можно предложить стандартный ввод пароля внутри приложения
ПредложитьАльтернативнуюАутентификацию();
КонецЕсли;
КонецПроцедуры
// Пример процедуры защищенного действия
&НаКлиенте
Процедура ВыполнитьЗащищенноеДействие()
Сообщить("Доступ к конфиденциальным данным предоставлен или операция выполнена.");
// Например, открыть форму с важной информацией, совершить платеж и т.д.
КонецПроцедуры
// Пример процедуры альтернативной аутентификации
&НаКлиенте
Процедура ПредложитьАльтернативнуюАутентификацию()
Сообщить("Пожалуйста, введите свой пароль в приложении для подтверждения.");
// Здесь может быть вызов формы для ввода пароля пользователя приложения
КонецПроцедуры
Помимо программного вызова проверки, платформа 1С также предоставляет флаги для управления видимостью и начальным состоянием опции "Использовать биометрию" в стандартном диалоге аутентификации мобильного приложения. Это актуально, если ваше приложение использует стандартный механизм входа и вы хотите предложить пользователю возможность входа по биометрии.
Рассмотрим эти флаги:
UseBiometrics: Этот флаг позволяет установить начальное состояние опции "Использовать биометрию" как включенное в диалоге аутентификации. Если биометрия доступна на устройстве и настроена, пользователь увидит предложение использовать ее сразу.
DisableUseBiometrics: Наоборот, этот флаг позволяет изначально отключить опцию "Использовать биометрию". В этом случае пользователь должен будет явно включить ее, если захочет ею воспользоваться.
Эти флаги обычно устанавливаются в настройках мобильного приложения или через программный код при инициализации, влияя на поведение стандартных диалогов, а не на прямое взаимодействие с биометрическим сканером через ДополнительнаяПроверкаПользователя.
Важно понимать, что биометрическая аутентификация в 1С Мобильной платформе имеет свои особенности и оптимальные сценарии использования:
Дополнительная проверка, а не основной вход: Платформа 1С изначально не предлагает средств аутентификации при старте мобильного приложения в том же объеме, что и для десктопных клиентов. Мобильное приложение может иметь только одного пользователя информационной базы, созданного программно. Это означает, что биометрическая аутентификация, скорее всего, будет использоваться как дополнительный шаг проверки внутри уже запущенного приложения или для подтверждения определенных действий, а не как основная процедура входа в систему. Например, вы можете запросить отпечаток пальца для:
Подтверждения финансовой операции (платеж, перевод).
Доступа к особо конфиденциальным данным внутри приложения.
Разблокировки определенного раздела или функции после короткого бездействия.
Однопользовательская модель: В мобильной платформе 1С обычно предполагается, что приложение используется одним пользователем, который уже вошел в систему. Если требуется многопользовательский режим с разными учетными записями, то биометрия может служить дополнительным слоем защиты для уже выбранной учетной записи, а не для ее выбора.
Защищенное хранилище данных: В 1С Мобильной платформе также существует объект ЗащищенноеХранилищеДанных, предназначенный для безопасного хранения конфиденциальной информации (например, паролей, токенов) на устройстве. Мы можем защитить доступ к данным в этом хранилище с помощью биометрии. Это позволяет, например, сохранить логин и пароль к внешней системе в зашифрованном виде и разрешать их извлечение только после успешной биометрической проверки пользователя.
// Пример использования ЗащищенногоХранилищаДанных с биометрией
&НаКлиенте
Процедура СохранитьТокенСБиометрией()
Если МобильноеПриложениеКлиент.ДополнительнаяПроверкаПользователя.ДоступнаБиометрическаяАутентификация() Тогда
Попытка
// Создаем объект защищенного хранилища
Хранилище = Новый ЗащищенноеХранилищеДанных;
// Сохраняем данные, указав, что требуется биометрическая защита
Хранилище.Записать("ТокенДоступа", "МойСекретныйТокенXYZ", Истина); // Истина = использовать биометрию
Сообщить("Токен успешно сохранен в защищенном хранилище с биометрической защитой.");
Исключение
Сообщить("Ошибка при сохранении токена: " + ОписаниеОшибки());
КонецПопытки;
Иначе
Сообщить("Биометрическая аутентификация недоступна. Токен не может быть защищен биометрией.");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьТокенСБиометрией()
Попытка
// Создаем объект защищенного хранилища
Хранилище = Новый ЗащищенноеХранилищеДанных;
// Пытаемся прочитать данные. Если они защищены биометрией,
// система автоматически запросит ее у пользователя.
Токен = Хранилище.Прочитать("ТокенДоступа");
Если Токен <> Неопределено Тогда
Сообщить("Получен защищенный токен: " + Токен);
Иначе
Сообщить("Токен не найден или доступ отменен пользователем/произошла ошибка аутентификации.");
КонецЕсли;
Исключение
Сообщить("Ошибка при получении токена: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Автор исходного сообщения упоминал желание реализовать двухфакторную аутентификацию (2FA). Давайте проанализируем, как биометрия в мобильном приложении 1С может быть частью такой системы.
Мы выяснили, что встроенные механизмы 1С позволяют использовать биометрию для подтверждения действий внутри приложения. Это может быть первый или второй фактор аутентификации, в зависимости от общей логики безопасности.
Разберем несколько подходов:
Биометрия как часть внутренней 2FA: Вы можете построить внутреннюю систему 2FA в 1С, где первый фактор — это обычный логин/пароль в приложение (или PIN-код), а второй фактор — это подтверждение важных действий через биометрию с использованием ДополнительнаяПроверкаПользователя. Например, при попытке отправки документа или изменении критических данных, приложение запрашивает отпечаток пальца.
Сторонние решения 2FA, защищенные биометрией устройства: Многие современные сервисы 2FA (такие как Logintap, Avanpost FAM/MFA+, MULTIfactor) используют мобильные приложения-аутентификаторы (например, Яндекс.Ключ, Google Authenticator). Эти приложения генерируют одноразовые пароли (OTP) или отправляют push-уведомления для подтверждения входа. Сами эти приложения-аутентификаторы на смартфоне могут быть защищены биометрией устройства. Таким образом, хотя 1С не напрямую взаимодействует с биометрией для генерации OTP или подтверждения push, устройство пользователя обеспечивает второй уровень защиты для самого аутентификатора.
Если мы реализуем двухфакторную аутентификацию на HTTP-запросах, как упоминал автор в сообщении (3), это, вероятно, подразумевает взаимодействие с внешним сервисом 2FA. Мобильное приложение 1С может отправлять запросы на этот сервис. В этом случае биометрия смартфона будет защищать сам процесс *инициирования* или *подтверждения* этого запроса со стороны мобильного приложения, а не напрямую участвовать в формировании токена 2FA.
OpenID Connect и аналогичные протоколы: Для более сложной интеграции с внешними системами аутентификации можно использовать протоколы вроде OpenID Connect. Мобильное приложение 1С может выступать в роли клиента, который перенаправляет пользователя на внешний провайдер идентификации. Этот провайдер может сам предлагать биометрическую аутентификацию или использовать мобильные приложения-аутентификаторы, которые, в свою очередь, защищены биометрией на самом мобильном устройстве. После успешной аутентификации на внешнем сервисе, 1С приложение получает токен, подтверждающий личность пользователя.
Итак, мы видим, что встроенные возможности 1С Мобильной платформы предоставляют надежный и простой способ интеграции биометрической аутентификации. Мы можем использовать ее как для повышения безопасности отдельных операций внутри приложения, так и для защиты доступа к локально хранимым конфиденциальным данным. При этом важно помнить о специфике мобильной платформы и использовать биометрию как дополнительный, а не единственный, механизм подтверждения личности пользователя.