Как реализовать идентификацию и авторизацию пользователей в мобильном приложении 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Особенности и ограничения мобильной платформы

Прежде всего, выясним причину возникновения сложностей. Рассмотрим официальную позицию и техническую реализацию мобильной платформы. В отличие от настольной версии, мобильное приложение 1С имеет жесткие ограничения в работе со списком пользователей информационной базы:

  1. Один сеанс — один пользователь: В локальной информационной базе мобильного приложения может существовать только один-единственный пользователь. Попытка создать второго пользователя через встроенный язык приведет к возникновению исключения.
  2. Отсутствие диалога авторизации: Мобильная платформа не предлагает штатного окна ввода логина и пароля при старте. Если пользователь заведен, система автоматически авторизует текущий сеанс под его учетными данными.
  3. Игнорирование настроек Конфигуратора: Пользователи, созданные в Конфигураторе основной базы, не переносятся на мобильное устройство при публикации или синхронизации.

Таким образом, мы сталкиваемся с ситуацией, когда мобильное приложение по своей архитектуре является персональным инструментом. Однако на практике часто требуется, чтобы с одним планшетом или ТСД (терминалом сбора данных) могли работать разные сотрудники, например, кладовщики в разные смены — для этого подойдёт готовое мобильное приложение для ТСД на Android. Рассмотрим, как обойти эти ограничения.

Выбор архитектурного решения: Мобильное приложение или Мобильный клиент

Проанализируем ситуацию: если вашей главной задачей является полноценная многопользовательская работа с онлайн-доступом к серверу, возможно, стоит выбрать Мобильный клиент. Разберем ключевое различие:

Если специфика вашего проекта требует работы именно в формате Мобильного приложения (например, для обеспечения оффлайн-режима), перейдем к реализации собственной системы идентификации.

Реализация собственной системы авторизации

Разберем по шагам, как «городить свой велосипед», который будет работать надежно. Идея заключается в том, чтобы создать интерфейсную надстройку над единственным системным пользователем.

Шаг 1: Создание структуры данных. Мы создадим справочник ПользователиПриложения. В нем будем хранить логины, хеши паролей и ссылки на соответствующие объекты основной базы. Также нам понадобится регистр сведений или константа для хранения текущего авторизованного сотрудника.

Шаг 2: Перехват события запуска. Нам необходимо реализовать проверку в модуле управляемого приложения. Используем обработчик события ПриНачалеРаботыСистемы. Проанализируем пример кода:


Процедура ПриНачалеРаботыСистемы()
    // Проверяем, авторизован ли кто-то в текущем сеансе
    ТекущийСотрудник = ПолучитьТекущегоАвторизованногоПользователя();
    
    Если ТекущийСотрудник.Пустая() Тогда
        // Если данных нет, открываем самописную форму логина
        ПараметрыФормы = Новый Структура("РежимБлокировкиВесьИнтерфейс", Истина);
        ОткрытьФорму("ОбщаяФорма.ФормаАвторизации", ПараметрыФормы, , ВариантОткрытияОкна.БлокироватьВесьИнтерфейс);
    КонецЕсли;
КонецПроцедуры

Шаг 3: Механизм программной смены ролей. Если нам нужно не просто «знать имя», а реально менять права доступа, мы можем использовать метод программного изменения набора ролей единственного пользователя. Для вступления изменений в силу приложение необходимо перезапустить. Разберем, как это сделать программно:


// Изменяем набор ролей у существующего системного пользователя
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
ПользовательИБ.Роли.Очистить();
ПользовательИБ.Роли.Добавить(Метаданные.Роли.Кладовщик);
ПользовательИБ.Записать();

// Перезапускаем приложение для применения прав
ЗавершитьРаботуСистемы(Ложь, Истина); 

Параметр Истина в методе ЗавершитьРаботуСистемы заставляет платформу выполнить немедленный перезапуск, что позволяет пользователю сразу войти с новыми правами.

Современные способы идентификации: биометрия и QR-коды

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

1. Использование биометрии (Touch ID / Face ID). Платформа позволяет запрашивать аутентификацию средствами ОС. Это идеальный вариант для подтверждения личности после того, как устройство уже было «привязано» к сотруднику. Рассмотрим логику: при первом входе пользователь вводит пароль, мы сохраняем токен в защищенное хранилище, а при последующих запусках вызываем биометрическое сканирование.

2. Идентификация по уникальному номеру устройства (ClientID). Мы можем получить идентификатор устройства и привязать его к конкретному пользователю в центральной базе 1С. При запуске мобильное приложение отправляет запрос на сервер (через HTTP-сервис): "Кто владелец устройства с ID XXX?". Если соответствие найдено, авторизация происходит автоматически. Для работы с системными функциями ОС при идентификации пригодится внешняя компонента с дополнительными функциями для Android.

3. Использование QR-кодов. Это самый популярный метод для складской логистики. Выясним причину его успеха: сотруднику достаточно подойти к монитору компьютера, где открыта его карточка в 1С, и сканировать индивидуальный QR-код камерой телефона. Мобильное приложение считывает зашифрованный в коде ключ и мгновенно авторизует пользователя. Для интеграции сканирования и работы с оборудованием можно использовать инструмент интеграции Android-устройств с 1С.

Безопасность и хранение данных

Важно помнить, что хранение паролей в открытом виде внутри мобильной базы небезопасно. Проанализируем рекомендации по защите данных:

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

← На главную