BackEnd на 1с8. Регистрация и авторизация мобильного или web приложения через расширение 1С (HTTP-сервис, HTTPS, без Firebase)

20.01.26

Администрирование - Информационная безопасность

Зачем нужна регистрация и авторизация мобильного или web-приложения через расширение 1С (HTTP-сервис, HTTPS, без Firebase) При разработке мобильных и web-приложений под 1С почти всегда встаёт вопрос: где и как хранить пользователей, пароли и сессии. Использование внешних сервисов авторизации (Firebase, Auth0 и др.) кажется удобным, но на практике часто оказывается проблемным. Реализация регистрации и авторизации непосредственно через 1С, в виде расширения и HTTP-сервиса, решает сразу несколько ключевых задач.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
BackEnd на 1с8. Регистрация и авторизация мобильного или web приложения через расширение 1С (HTTP-сервис, HTTPS, без Firebase):
.cfe 20,17Kb
1 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Регистрация и авторизация мобильного приложения через расширение 1С (HTTP-сервис, HTTPS, без Firebase)

 

Задача

Реализовать регистрацию и авторизацию пользователей мобильного приложения на стороне 1С:

 

1. Соблюдение требований по персональным данным (152-ФЗ)

При использовании Firebase и аналогичных сервисов:

  • персональные данные пользователей хранятся за пределами РФ;
  • усложняется юридическое сопровождение проекта;
  • возникает зависимость от политики внешнего провайдера.

При авторизации через 1С:

  • все данные (email, пароли, токены) хранятся в информационной базе 1С;
  • сервер находится под полным контролем компании;
  • проще обеспечить соответствие требованиям 152-ФЗ.

2. Единый центр данных и бизнес-логики

1С в большинстве проектов уже является:

  • источником данных о клиентах;
  • системой учёта и аналитики;
  • точкой интеграции с внешними сервисами.

Регистрация через 1С позволяет:

  • связать пользователя приложения с существующими справочниками (контрагенты, покупатели);
  • применять бизнес-логику 1С при регистрации и авторизации;
  • не дублировать данные в сторонних системах.

3. Отказ от внешних зависимостей

Firebase и аналоги:

  • могут менять тарифы;
  • могут быть недоступны;
  • требуют отдельной поддержки и мониторинга.

Собственная авторизация в 1С:

  • не зависит от сторонних сервисов;
  • работает ровно так, как реализовано в конфигурации;
  • полностью управляется разработчиком 1С.

4. Контроль над токенами и сессиями

При реализации через HTTP-сервис 1С:

  • можно хранить токены в справочнике или регистре;
  • можно инвалидировать токен при смене пароля;
  • можно реализовать ограничение по устройствам;
  • можно гибко управлять временем жизни токена.
  • Это особенно важно для:
  • корпоративных приложений;
  • B2B-систем;
  • внутренних мобильных решений.

5. Реализация через расширение, без изменения типовой конфигурации

Использование расширения даёт следующие преимущества:

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

6. Универсальность: мобильные и web-клиенты

HTTP-сервис в 1С:

  • одинаково подходит для Flutter, React, Vue, web-клиентов;
  • работает по стандартному JSON over HTTPS;
  • легко тестируется через Postman.

Один и тот же сервис может использоваться:

  • мобильным приложением;
  • web-кабинетом пользователя;
  • внешними интеграциями.

7. Практический контроль безопасности

В собственной реализации:

  • пароли хэшируются (SHA-256 + salt);
  • в БД не хранится открытый пароль;
  • можно реализовать лимит попыток;
  • можно гибко управлять восстановлением пароля.

Без “чёрного ящика” внешнего сервиса.

 

Платформа: 1С:Предприятие 8.3.27
Сервер: Windows Server + IIS
Клиент: мобильное приложение (Flutter, JSON)


Архитектура

 


 

Мобильное приложение | | HTTPS + JSON v IIS | v HTTP-сервис 1С (расширение) | v Справочник web_МобПользователи

1С выступает сервером регистрации и авторизации.


Метаданные (в расширении)

Справочник web_МобПользователи

 

 

Минимальный набор реквизитов:

 

Имя Тип
Email Строка
СольПароля Строка
ХэшПароля Строка
mob_uid Строка
Токен Строка
ДатаРегистрации Дата

Для восстановления пароля:

Имя Тип
ResetCodeSalt Строка
ResetCodeHash Строка
ResetCodeExpires Дата
ResetTries Число

Для удаления:

Имя Тип
Удален Булево
ДатаУдаления Дата

HTTP-сервис web_mobile

Реализованные маршруты:

Метод URL
POST /v1/auth/register
POST /v1/auth/login
GET /v1/auth/me
DELETE /v1/auth/me
POST /v1/auth/forgot
POST /v1/auth/reset

Хэширование пароля

Используется схема:

SHA256(password + ":" + salt)

 

&НаСервере
Функция GenerateSalt() Экспорт
    Возврат Строка(Новый УникальныйИдентификатор);
КонецФункции

&НаСервере
Функция PasswordHashSha256(Пароль, Соль) Экспорт
    Данные = КодировкаТекста.UTF8.GetBytes(Пароль + ":" + Соль);
    Хэш = ХешированиеДанных.SHA256(Данные);
    Возврат Base64Значение(Хэш);
КонецФункции

 

Чтение JSON из запроса

&НаСервере
Функция ReadJsonBody(Запрос, Отказ) Экспорт
    Попытка
        Тело = Запрос.ПолучитьТелоКакСтроку();
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(Тело);
        Возврат ПрочитатьJSON(Чтение, Ложь);
    Исключение
        Отказ = Истина;
        Возврат Неопределено;
    КонецПопытки;
КонецФункции

 

Регистрация пользователя

POST /v1/auth/register

Алгоритм:

  1. Читаем JSON

  2. Генерируем соль и хэш

  3. Создаём элемент справочника

  4. Сначала записываем

  5. Генерируем токен и сохраняем его

&НаСервере
Функция v1_auth_register(Запрос) Экспорт

    Данные = ReadJsonBody(Запрос, Отказ);
    Если Отказ Тогда
        Возврат JsonResponse(400, Новый Структура("error", "INVALID_JSON"));
    КонецЕсли;

    Соль = GenerateSalt();
    Хэш = PasswordHashSha256(Данные.Password, Соль);

    Пользователь = Справочники.web_МобПользователи.СоздатьЭлемент();
    Пользователь.Email = НРег(Данные.Email);
    Пользователь.СольПароля = Соль;
    Пользователь.ХэшПароля = Хэш;
    Пользователь.mob_uid = Данные.DeviceID;
    Пользователь.ДатаРегистрации = ТекущаяДата();
    Пользователь.Записать();

    Токен = IssueToken(Пользователь.Ссылка);

    Объект = Пользователь.Ссылка.ПолучитьОбъект();
    Объект.Токен = Токен;
    Объект.Записать();

    Возврат JsonResponse(200,
        Новый Структура("status,token", "registered", Токен));

КонецФункции

 

Важно: токен генерируется только после Записать().


Авторизация и получение профиля

Решение: использовать собственный заголовок:

X-Auth-Token: <token>


Получение профиля

GET /v1/auth/me

&НаСервере
Функция v1_auth_me(Запрос) Экспорт

    Токен = Запрос.Заголовки.Получить("X-Auth-Token");
    Если ПустаяСтрока(Токен) Тогда
        Возврат JsonResponse(401, Новый Структура("error", "NO_TOKEN"));
    КонецЕсли;

    Выборка = Справочники.web_МобПользователи.Выбрать();
    Пока Выборка.Следующий() Цикл
        Если Выборка.Токен = Токен Тогда
            Возврат JsonResponse(200,
                Новый Структура("email", Выборка.Email));
        КонецЕсли;
    КонецЦикла;

    Возврат JsonResponse(401, Новый Структура("error", "INVALID_TOKEN"));

КонецФункции

 

Восстановление пароля

/v1/auth/forgot

  • Генерируется 6-значный код

  • В БД хранится только хэш

  • Email не раскрывается

{ "status": "sent" }

 

/v1/auth/reset

{ "Email": "test@example.com", "Code": "123456", "NewPassword": "newpass123" }

 

Проверяется срок действия и количество попыток, затем пароль обновляется.


Удаление пользователя

DELETE /v1/auth/me

 
Объект.Удален = Истина; Объект.ДатаУдаления = ТекущаяДата(); Объект.Токен = ""; Объект.Записать();

Удаление реализовано мягкое.


Итог

В результате получено рабочее решение:

  • регистрация и авторизация целиком в 1С;

  • HTTPS;

  • соответствие требованиям хранения данных;

  • без Firebase и сторонних сервисов;

  • реализовано в виде расширения;

  • подходит для мобильных приложений.


Что можно сделано далее

  • хранение токенов в регистре сведений (мультисессии);

  • TTL токена;

  • SMTP / почтовый сервис;

  • аудит действий пользователей.


Статья основана на реальной практической реализации и отладке, включая проблемы IIS и HTTP-сервисов 1С, возникающие при использовании стандартных заголовков авторизации.

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.25.85

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Информационная безопасность Чистка данных Системный администратор Разработчик Руководитель проекта 1С 8.3 1С:Бухгалтерия 3.0 Платные (руб)

Обезличивает копию рабочей базы 1С перед передачей наружу и возвращает настоящие данные обратно, когда база вернулась. Это обратимая псевдонимизация: соответствия «исходное - псевдоним» пишутся в отдельный зашифрованный датасет, который остаётся у владельца. Работает на любой конфигурации - обходит метаданные и находит персональные данные сам, без списка реквизитов под конкретную базу. Суммы, количества, даты и номера документов не трогает никогда, оборотно-сальдовая до и после совпадает до копейки. Проверено на трёх конфигурациях: 106 031 объект, 215 642 замены, ноль ошибок, возврат 100 процентов.

42700 руб.

18.08.2026    1480    3    0    

3

WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

17568 руб.

20.12.2024    7750    35    4    

35

Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    25816    42    26    

30

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    4154    12    0    

25

WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    3074    6    0    

8

WEB-интеграция Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Управленческий учет Платные (руб)

Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.

5094 руб.

21.06.2022    11405    12    0    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ileshapro100 22.01.26 22:04 Сейчас в теме
Добрый день! Статья как ознакомительная, на мой взгляд. Простите за мое мнение, хочу высказать
1)Зачем в 1с вы пишите процедуры и функции на английском? - в 1с стараются все на нативном языке писать, все что уходит за 1с то там не английском
2) Объект = Пользователь.Ссылка.ПолучитьОбъект();
Объект.Токен = Токен;
Объект.Записать();
У вас вроде как есть уже элемент справочника выше, зачем вы его заново получаете. Можно к нему и обратиться и заново записать.
3)Выборка = Справочники.web_МобПользователи.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Токен = Токен Тогда
Возврат JsonResponse(200,
Новый Структура("email", Выборка.Email));
КонецЕсли;
КонецЦикла;
Почему не задать сразу точный запрос к базе, вы тут получаете список ссылок, а потом в цикле по каждой ссылке делает под запрос , чтобы сравнить с токеном. Если справочников много, то это нагрузка на субд
Для отправки сообщения требуется регистрация/авторизация