Для розничного предприятия требовалось настроить защищенный HTTP(S)-доступ к информационным базам 1С и при этом исключить хранение логинов и паролей в файлах интеграции. Решением стала доверительная аутентификация с помощью JWT-токенов, сохраняющая привязку каждого запроса к конкретному пользователю.
Задача проекта
При интеграции 1С с внешними системами учетные данные нередко сохраняются в коде, конфигурационных файлах или параметрах подключения. Такой подход создает риск компрометации паролей и усложняет управление доступом.
Заказчику требовалось:
- обеспечить безопасную аутентификацию при обращении внешних систем к веб-сервисам 1С;
- исключить хранение логина и пароля в коде, настройках интеграции и открытых параметрах запросов;
- ограничивать срок действия предоставленного доступа;
- реализовать временные ссылки для входа в 1С без передачи пароля;
- сохранить возможность выполнения операций от имени конкретного пользователя информационной базы.
Решение: аутентификация с помощью JWT
Для организации доверительного доступа был выбран механизм JWT — JSON Web Token, описанный стандартом RFC 7519. Его поддержка доступна в платформе «1С:Предприятие» начиная с версии 8.3.21.
JWT представляет собой подписанную структуру данных. Она содержит сведения об эмитенте, пользователе, назначении и сроке действия доступа, но не содержит пароль. Целостность токена подтверждается электронной подписью.
Главный принцип: клиент передает не логин и пароль, а ограниченный по времени подписанный токен. Сервер 1С проверяет подпись и предоставляет доступ только после успешной проверки содержащихся в токене данных.
Как работает механизм
Выдача токена. Сервер аутентификации — например, 1С:ERP или внешний сервис — после успешной авторизации формирует JWT-токен и подписывает его секретным ключом.
Передача данных доступа. В токен включаются идентификатор пользователя, эмитент, получатель, разрешенные приложения и срок действия.
Вызов веб-сервиса. Клиент передает токен в заголовке
Authorization: Bearer <JWT> или через параметр
AccessToken.
Проверка подписи. Сервер приложений 1С проверяет токен с помощью заранее сохраненного ключа доверенного эмитента.
Сопоставление пользователя. Значение из поля
sub, адрес электронной почты или имя пользователя
сопоставляется с учетной записью информационной базы.
После успешной проверки доступ предоставляется от имени
найденного пользователя.
Ключевые технические особенности
-
Для создания и подписи токена используется объект встроенного языка
ТокенДоступа. -
Подпись может формироваться с применением поддерживаемого алгоритма,
например
HS256. -
В файле веб-публикации
*.vrdуказываются доверенные эмитенты и ключи проверки подписи. -
Идентификация пользователя выполняется по предусмотренному проектом
признаку:
sub, электронной почте или имени. - Время жизни токена ограничивается с помощью соответствующих атрибутов. Например, доступ может автоматически завершаться через один час.
- Для разных приложений и сценариев можно задавать отдельных получателей токена и собственные ограничения доступа.
Временный вход без пароля
На основе JWT был реализован сценарий временной ссылки. Система формирует URL с ограниченным по времени токеном, который позволяет пользователю открыть 1С без ввода постоянного пароля.
Такой механизм можно применять:
- для первого входа нового сотрудника;
- для заполнения анкеты или выполнения разовой операции;
- для предоставления доступа внешнему участнику процесса;
- для восстановления или первичной настройки учетной записи.
Рисунок 1 – Схема реализации
Результат проекта
После внедрения JWT-аутентификации заказчик получил:
- Защиту учетных данных. Логины и пароли больше не передаются между системами и не сохраняются в настройках интеграции.
- Бесшовную интеграцию. Одна конфигурация 1С может безопасно обращаться к веб-сервисам другой конфигурации от имени нужного пользователя.
- Управляемое время доступа. Каждый токен действует только в течение установленного периода.
- Временные ссылки. Пользователи могут выполнять первый или разовый вход без передачи постоянного пароля.
- Возможность организации SSO. Механизм можно использовать как часть единого входа в несколько сервисов 1С, в том числе при интеграции с внешними системами идентификации.
- Снижение нагрузки на инфраструктуру. Сервер проверяет подпись и срок действия токена без необходимости хранить отдельные данные о каждой пользовательской сессии.
В результате мы закрыли риск утечки паролей, безопасно связали информационные системы 1С, упростили предоставление временного доступа и сохранили привычный интерфейс работы для сотрудников.
