Как настроить аутентификацию пользователей 1С через внешний сервис, например Mail.ru?

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

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

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

1. Аутентификация по электронной почте: Встроенный механизм 1С

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

Принцип работы этого решения достаточно прост и надежен:

  1. Пользователь пытается войти в информационную базу.
  2. Система 1С определяет, что для данного пользователя настроена аутентификация по электронной почте.
  3. На указанный в учетной записи пользователя адрес электронной почты (например, на Mail.ru) отправляется письмо с уникальным одноразовым кодом.
  4. Пользователь открывает свою почту, находит письмо, копирует код и вводит его в специальную форму в 1С.
  5. Если введенный код совпадает с отправленным, доступ к системе предоставляется. В противном случае, пользователь получает сообщение об ошибке и может попробовать повторить попытку или запросить новый код.

Преимущества и настройка:

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

2. Аутентификация с использованием JWT-токенов

Теперь давайте рассмотрим более продвинутый и универсальный подход, который позволяет значительно сократить объем собственной логики. Речь идет об аутентификации с использованием 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);
    КонецЕсли;
    Возврат Ответ;
КонецФункции

3. Интеграция с Mail.ru через OAuth 2.0 и OpenID Connect

Разберем, как "подружить" 1С с сервисами вроде Mail.ru или Google. Хотя реализация может показаться сложной, существуют проверенные методики, например, настройка Google OAuth 2.0 на обычных формах, принципы которой применимы и к другим провайдерам.

OAuth 2.0 для почтовых ящиков:

Начиная с версии 8.3.19, 1С поддерживает OAuth 2.0 для доступа к почте. Это позволяет 1С выступать как OAuth-клиент. В некоторых случаях процесс требует сложной подписи запросов, как при получении токена авторизации с использованием RSA SHA512, что также реализуемо встроенными средствами языка 1С.

Общая схема аутентификации:

  1. Пользователь инициирует вход через Mail.ru.
  2. 1С перенаправляет его на страницу авторизации сервиса.
  3. После успешного ввода данных сервис возвращает код авторизации.
  4. 1С обменивает код на access_token. При необходимости можно использовать безопасный сервисный аккаунт для получения токена доступа, если это предусмотрено архитектурой сервиса.
  5. По полученному токену 1С запрашивает email пользователя и выполняет вход.

Пример получения токена (концептуально):


Функция ПолучитьТокенДоступа(КодАвторизации)
    АдресСервера = "https://oauth.mail.ru";
    Ресурс = "/token";
    Соединение = Новый HTTPСоединение(АдресСервера);
    Запрос = Новый HTTPЗапрос(Ресурс);
    // ... формирование параметров запроса ...
    Попытка
        Ответ = Соединение.Отправить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
            ДанныеОтвета = JSON.Прочитать(Ответ.ПолучитьТелоКакСтроку());
            Возврат ДанныеОтвета;
        КонецЕсли;
    Исключение
        Возврат Неопределено;
    КонецИсключения;
КонецФункции

OpenID Connect:

Если провайдер (например, Mail.ru или Google) поддерживает OpenID Connect, интеграция упрощается, так как 1С получает ID Token в формате JWT. Это позволяет извлечь данные о пользователе сразу после валидации токена.

Общие рекомендации и безопасность

При интеграции 1С с внешними системами всегда соблюдайте следующие правила:

С развитием платформы 1С:Предприятие механизмы аутентификации через внешние сервисы стали доступнее. Будь то простая проверка по e-mail или сложная интеграция через OAuth 2.0, современные инструменты позволяют реализовать эти задачи надежно и безопасно.

← На главную