Разработка модуля авторизации и регистрации 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка модуля авторизации и регистрации 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка модуля авторизации и регистрации 1С-Битрикс

Стандартный компонент авторизации bitrix:system.auth.form закрывает большинство задач, но бизнес регулярно приходит с требованиями, которые выходят за его рамки: вход по номеру телефона с OTP, авторизация через Госуслуги, мультифакторная аутентификация, единый вход для нескольких сайтов, кастомные поля регистрации с верификацией. Кастомный модуль авторизации — ответ на эти требования.

Как работает авторизация в Битрикс

Битрикс предоставляет несколько точек расширения системы авторизации:

Социальная авторизация реализована через модуль socialservices. Провайдеры расширяются через класс, наследующий \Bitrix\SocialServices\Base. Для нестандартных провайдеров (Telegram, Госуслуги) создаётся собственный класс.

Авторизация по токену / API-ключу — через обработчик события OnBeforeUserLogin или через middleware в OnPageStart.

Событийная модель: ключевые события для расширения авторизации:

  • OnBeforeUserLogin — до авторизации (можно запретить)
  • OnAfterUserLogin — после успешного входа
  • OnUserLoginAttempt — при каждой попытке (для логирования, rate limiting)
  • OnBeforeUserRegister — до регистрации
  • OnAfterUserRegister — после успешной регистрации

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

Самый частый запрос. Схема работы:

  1. Пользователь вводит номер телефона
  2. Сервер генерирует OTP-код (6 цифр), сохраняет в сессию или кэш с TTL 5 минут
  3. Отправляет SMS через провайдера (СБОЛ, Infobip, SMS.ru)
  4. Пользователь вводит код
  5. Сервер верифицирует код, ищет пользователя по полю UF_PHONE или PERSONAL_PHONE, логинит через CUser::Authorize($userId)
// Верификация OTP и авторизация
public function verifyOtp(string $phone, string $code): bool
{
    $session = Application::getInstance()->getSession();
    $stored = $session->get('otp_' . md5($phone));

    if (!$stored || $stored['code'] !== $code || $stored['expires'] < time()) {
        return false;
    }

    $session->delete('otp_' . md5($phone));

    // Найти пользователя по телефону
    $user = UserTable::getRow([
        'filter' => ['=PERSONAL_PHONE' => $phone, '=ACTIVE' => 'Y'],
        'select' => ['ID'],
    ]);

    if ($user) {
        CUser::Authorize($user['ID']);
        return true;
    }

    // Авторегистрация если нужно
    return $this->autoRegister($phone);
}

Интеграция с Госуслугами (ЕСИА)

Авторизация через Госуслуги использует ЕСИА (Единую систему идентификации и аутентификации) с протоколом OAuth 2.0 + OpenID Connect. Особенности:

  • Требуется регистрация информационной системы в Реестре Минцифры
  • Необходимо использование PKCS#7/GOST-R подписи запросов (криптографическая библиотека КриптоПро или OpenSSL с российскими алгоритмами)
  • Тестовая среда ЕСИА доступна по отдельному URL

Интеграция реализуется как провайдер авторизации, наследующий \Bitrix\SocialServices\Base или как отдельный обработчик с redirect URI.

Единый вход (SSO) для нескольких сайтов

При мультисайтовой конфигурации Битрикс поддерживает SSO через механизм «Хранилище сессий». Для сайтов на разных доменах — реализуется через:

  • Общий домен второго уровня (.example.ru) с cookie на домен
  • OAuth2-сервер на основном сайте + клиенты на дочерних
  • JWT-токены в URL-параметрах для кросс-доменного перехода

Двухфакторная аутентификация (2FA)

2FA реализуется через обработчик OnAfterUserLogin:

public static function onAfterUserLogin(array &$params): void
{
    $userId = $params['USER_ID'];

    if (self::is2FAEnabled($userId)) {
        // Сохранить флаг "требуется 2FA" в сессии
        $session = Application::getInstance()->getSession();
        $session->set('2fa_required', true);
        $session->set('2fa_user_id', $userId);

        // Выйти из текущей сессии и перенаправить на страницу ввода кода
        CUser::Logout();
        LocalRedirect('/auth/2fa/');
    }
}

TOTP (Time-based One-Time Password по RFC 6238) — стандартный алгоритм для совместимости с Google Authenticator, Яндекс.Ключ.

Кастомные поля регистрации

Поля регистрационной формы расширяются через пользовательские поля UF_* модуля user. Специфические задачи:

  • Верификация ИНН/ОГРН при регистрации юрлица — через API ФНС или dadata.ru
  • Подтверждение email через уникальную ссылку — стандартный механизм Битрикс + кастомизация письма
  • Загрузка документов при регистрации — через UF_ поля типа файл с модерацией

Типичные сроки разработки

Функциональность Срок
OTP-авторизация по телефону 1–2 недели
Социальная авторизация (2–3 провайдера) 1–2 недели
2FA (TOTP) 1 неделя
Авторизация через Госуслуги (ЕСИА) 3–5 недель
SSO для нескольких сайтов 2–4 недели
Комплексный модуль (всё вместе) 6–10 недель

Модуль тестируется на соответствие требованиям безопасности: защита от брутфорса (rate limiting), защита от CSRF, корректное завершение сессий, хранение токенов в хешированном виде.