Многие пользователи и администраторы 1С сталкиваются с задачей интеграции системы аутентификации 1С:Предприятие с внешними сервисами. Особенно актуальным становится вопрос, когда необходимо использовать уже существующие учетные записи, например, из почтовых сервисов, таких как Mail.ru, для входа в информационную базу 1С. Ранее это могло казаться сложной задачей, требующей серьезных доработок и "городить кучу" собственной логики. Однако, с развитием платформы 1С:Предприятие, появились новые, более удобные и стандартизированные механизмы.
В этой статье мы подробно рассмотрим, как современная платформа 1С позволяет решить проблему аутентификации с использованием внешних сервисов, включая Mail.ru, используя встроенные возможности и стандартные протоколы. Мы разберем несколько подходов, каждый из которых имеет свои преимущества и сценарии применения.
Давайте начнем с одного из наиболее интуитивно понятных и теперь уже встроенных способов, который был предложен в обсуждении как ручная реализация. Представьте ситуацию: пользователь хочет войти в базу 1С, но вместо ввода привычного пароля, он получает одноразовый код на свой адрес электронной почты, который затем использует для входа. Ранее это требовало бы значительных усилий по программированию, но с версии платформы 8.3.27 этот механизм стал стандартной функциональностью, позволяющей выполнить полную настройку аутентификации по e-mail.
Принцип работы этого решения достаточно прост и надежен:
Преимущества и настройка:
Для реализации этого подхода нам потребуется настроить учетные записи пользователей в 1С, указав их электронную почту, и активировать соответствующий вид аутентификации. Платформа самостоятельно позаботится об отправке и проверке кодов.
Теперь давайте рассмотрим более продвинутый и универсальный подход, который позволяет значительно сократить объем собственной логики. Речь идет об аутентификации с использованием JWT-токенов (JSON Web Token). С версии платформы 8.3.21 в 1С:Предприятие появилась встроенная поддержка JWT-токенов (RFC 7519), что открывает широкие возможности для организации бесшовной интеграции и SSO. Для быстрого старта можно использовать готовую конфигурацию для реализации аутентификации по JWT-токену, которую легко адаптировать под свои нужды.
Что такое JWT и как это работает с 1С?
JWT — это компактный, URL-безопасный способ представления информации, которая будет передаваться между сторонами. В контексте 1С, JWT-токены позволяют платформе выступать как в роли сервера аутентификации, так и в роли клиента. Платформенные средства позволяют реализовать аутентификацию стандартными средствами 1С, используя Access и Refresh токены.
Основные преимущества использования JWT в 1С:
Пример концептуальной работы с JWT в 1С:
Предположим, внешний сервис выдает JWT-токен. В 1С мы настраиваем HTTP-сервис для его обработки:
// Пример получения JWT-токена из заголовка HTTP-запроса
Функция ОбработатьЗапрос(Запрос)
Перем Токен;
Если Запрос.Заголовки.Свойство("Authorization") Тогда
СтрокаАвторизации = Запрос.Заголовки.Authorization;
Если Найти(СтрокаАвторизации, "Bearer ") = 1 Тогда
Токен = Сред(СтрокаАвторизации, СтрДлина("Bearer ") + 1);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Токен) Тогда
// Валидация и получение пользователя
// Ответ = Новый HTTPСервисОтвет(200);
Иначе
Ответ = Новый HTTPСервисОтвет(401);
КонецЕсли;
Возврат Ответ;
КонецФункции
Разберем, как "подружить" 1С с сервисами вроде Mail.ru или Google. Хотя реализация может показаться сложной, существуют проверенные методики, например, настройка Google OAuth 2.0 на обычных формах, принципы которой применимы и к другим провайдерам.
OAuth 2.0 для почтовых ящиков:
Начиная с версии 8.3.19, 1С поддерживает OAuth 2.0 для доступа к почте. Это позволяет 1С выступать как OAuth-клиент. В некоторых случаях процесс требует сложной подписи запросов, как при получении токена авторизации с использованием RSA SHA512, что также реализуемо встроенными средствами языка 1С.
Общая схема аутентификации:
access_token. При необходимости можно использовать безопасный сервисный аккаунт для получения токена доступа, если это предусмотрено архитектурой сервиса.Пример получения токена (концептуально):
Функция ПолучитьТокенДоступа(КодАвторизации)
АдресСервера = "https://oauth.mail.ru";
Ресурс = "/token";
Соединение = Новый HTTPСоединение(АдресСервера);
Запрос = Новый HTTPЗапрос(Ресурс);
// ... формирование параметров запроса ...
Попытка
Ответ = Соединение.Отправить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ДанныеОтвета = JSON.Прочитать(Ответ.ПолучитьТелоКакСтроку());
Возврат ДанныеОтвета;
КонецЕсли;
Исключение
Возврат Неопределено;
КонецИсключения;
КонецФункции
OpenID Connect:
Если провайдер (например, Mail.ru или Google) поддерживает OpenID Connect, интеграция упрощается, так как 1С получает ID Token в формате JWT. Это позволяет извлечь данные о пользователе сразу после валидации токена.
При интеграции 1С с внешними системами всегда соблюдайте следующие правила:
HTTPS.С развитием платформы 1С:Предприятие механизмы аутентификации через внешние сервисы стали доступнее. Будь то простая проверка по e-mail или сложная интеграция через OAuth 2.0, современные инструменты позволяют реализовать эти задачи надежно и безопасно.