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
0 6 200 руб. Купить

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

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

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

Регистрация и авторизация мобильного приложения через расширение 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

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

См. также

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

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

35000 руб.

03.08.2020    23041    33    24    

26

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

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

17280 руб.

20.12.2024    5110    22    4    

24

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

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

60000 руб.

07.05.2019    40928    75    45    

31

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

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

19672 руб.

02.02.2021    21684    62    52    

40

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

5196 руб.

28.04.2016    99765    115    219    

363
Для отправки сообщения требуется регистрация/авторизация