Опишите доработку или сценарий — обсудим вместе с другими клиентами.
Двухфакторная авторизация (Google / Яндекс.Ключ) (EcomLabs)
Технические данные
Совместимые редакции
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Старт
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Стандарт
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Малый бизнес
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Бизнес
Описание
Двухфакторная авторизацияTOTP (RFC 6238) с поддержкой Яндекс.Ключ, Google Authenticator, Microsoft Authenticator и других приложений. Несколько устройств, резервные коды, обязательность по группам, админка и публичная часть.
1. Описание работыНазначение
Модуль добавляет второй фактор входа по стандарту TOTP: после логина и пароля пользователь вводит одноразовый код из приложения-аутентификатора (или резервный код). Работает в административной части и на витрине, не требует обязательного модуля «Проактивная защита».
Типовые сценарии- Вход с уже подключённой 2FA. Пользователь вводит логин/пароль → система открывает страницу подтверждения → ввод 6-значного кода (или резервного) → сессия помечается как прошедшая 2FA → редирект на исходный URL (админка или сайт).
- Обязательная 2FA без устройств. Если пользователь входит в группу из настройки «обязательные группы», а устройств ещё нет, после пароля его направляют на страницу подключения (QR + два кода подряд).
- Добровольное подключение. Через компонент ecl:yandex2fa.setup в личном кабинете или через URL setup: генерация секрета, QR otpauth://totp/..., подтверждение двумя кодами, выдача резервных кодов один раз.
- Несколько устройств. На аккаунт можно добавить несколько аутентификаторов (лимит настраивается). Удаление/отключение с учётом политики «обязательна для группы».
- Повторный вход в срок доверия. После успешной 2FA действует trust-сессия (минуты из настроек), чтобы не запрашивать код на каждом хите в рамках TTL.
Безопасность (кратко)
- Секреты устройств хранятся на сервере в защищённом виде; резервные коды — только как хеши (plaintext показывается один раз при выдаче).
- Окно проверки TOTP (±N периодов по 30 сек), защита от повторного использования одного шага (replay).
- Лимит попыток ввода и временная блокировка по настройкам.
- Опционально — приём кода только по HTTPS.
- Доверие после 2FA — в отдельной таблице модуля, не в b_option.
- Критичные действия пишутся в журнал модуля.
Служебные URL
| Назначение | Путь по умолчанию |
|---|---|
| Ввод кода (challenge) | /bitrix/tools/ecl_yandex2fa_auth.php |
| Подключение 2FA | /bitrix/tools/ecl_yandex2fa_setup.php |
| AJAX setup | /bitrix/tools/ecl_yandex2fa_setup_ajax.php |
URL challenge/setup можно переопределить в настройках модуля. Для встраивания в шаблон сайта удобнее компоненты (см. раздел 3).
2. Настройки и страницы в админке2.1. Настройки модуля
Путь: Настройки → Настройки продукта → Настройки модулей → Двухфакторная авторизация (Google / Яндекс.Ключ) (EcomLabs) (или пункт меню модуля «Настройки»).
| Параметр | Смысл · значение по умолчанию |
|---|---|
| Модуль включён | Глобальный выключатель 2FA без удаления модуля. По умолчанию N (после установки нужно включить). |
| Только HTTPS | Не принимать проверку кода по HTTP. По умолчанию N. |
| Группы, для которых 2FA обязательна | Мультивыбор групп пользователей. Для этих групп без активного устройства вход не завершится — увод на setup. По умолчанию группа администраторов (1). |
| Окно проверки, периодов ± | Допуск по времени TOTP (период 30 сек). Обычно 1. |
| Алгоритм HMAC | Для новых подключений: SHA-1 / SHA-256 / SHA-512. Google Authenticator — только SHA-1. По умолчанию sha1. |
| Количество резервных кодов | 8–20 штук при enroll / перевыпуске. По умолчанию 10. |
| Максимум устройств на пользователя | 1–20. По умолчанию 5. |
| Срок доверия сессии после 2FA, минут | TTL trust после успешного кода. По умолчанию 720 (12 часов). |
| Попыток ввода до блокировки | Неуспешные verify подряд. По умолчанию 5. |
| Блокировка, секунд | Пауза после исчерпания попыток. По умолчанию 900. |
| Издатель (issuer) | Подпись в приложении. Пусто — имя сайта из настроек main. |
| ASCII-лейблы в QR | Транслит кириллицы в label/issuer для приложений с кривой UTF-8 (например Drop Authenticator). Google / Яндекс.Ключ обычно UTF-8 переваривают. |
| URL страницы ввода кода | По умолчанию /bitrix/tools/ecl_yandex2fa_auth.php. |
| URL страницы подключения 2FA | По умолчанию /bitrix/tools/ecl_yandex2fa_setup.php. |
| Инструкция для пользователя | Текст подсказок; пусто — встроенная инструкция Google Authenticator + Яндекс.Ключ. |
Пункт меню модуля: Пользователи c 2FA.
- Колонки: ID, логин, имя, активность 2FA, число устройств, дата, использование резервных кодов и т.п.
- Действие сброса 2FA пользователя (с подтверждением) — устройства и recovery очищаются, trust сбрасывается.
Пункт меню: Журнал. События enroll, verify, recovery, ошибки, сбросы. Колонки: дата, пользователь, действие, IP, описание.
2.4. МенюРаздел в админ-меню Bitrix с пунктами: Настройки, Пользователи, Журнал.
3. Описание компонентов3.1. ecl:yandex2fa.auth
Блок подтверждения входа / статуса 2FA. Можно ставить на любую страницу (в т.ч. вместо отдельного tools-URL).
- Гость — предложение сначала войти логином и паролем.
- Нужен код — форма TOTP / recovery.
- Уже verified — сообщение, что повторный ввод не нужен (если включено параметром).
- 2FA не требуется / модуль выключен — соответствующие статусы.
Параметры (основные):
- AJAX_MODE — режим AJAX, по умолчанию Y.
- SHOW_VERIFIED — показывать блок, если вход уже подтверждён.
- Кеш: стандартные CACHE_TYPE / CACHE_TIME.
Подключение и управление устройствами: список, «Подключить» / «Добавить устройство», QR, два кода, резервные коды (один раз), удаление устройства, перевыпуск recovery, отключение 2FA (если разрешено политикой группы).
- Работает автономно на странице профиля /tools/setup.
- AJAX_MODE по умолчанию Y — действия через ecl_yandex2fa_setup_ajax.php.
- На tools-странице — центрированная карточка и кнопка «Вернуться на сайт».
- Поддержка композита.
Установка через Маркетплейс в админке
- Войдите в административную часть сайта под пользователем с правом установки модулей.
- Откройте Marketplace → Установленные решения (или Marketplace → Каталог решений, если модуль публикуется в каталоге).
- Для локальной установки из архива: Marketplace → Установка из ZIP (или загрузка решения) — укажите пакет модуля ecl.yandex2fa.
- Дождитесь копирования файлов, создания таблиц и регистрации событий. При необходимости пройдите мастер установки модуля.
- Перейдите в Настройки модулей → ecl.yandex2fa, включите «Модуль включён», задайте обязательные группы и при необходимости URL/issuer.
- Проверьте вход администратора: после пароля должен появиться setup или challenge; подключите приложение и сохраните резервные коды.
- При обновлении залейте новую версию поверх / через механизм обновлений Маркетплейса, сбросьте кеш Bitrix (и композит, если включён).
При удалении модуля мастер предложит сохранить или удалить данные (таблицы устройств, recovery, trust, лог). События и файлы tools/components отключаются штатно.
Требования| Платформа | 1С-Битрикс: Управление сайтом (от редакции «Старт» и выше), 1С-Битрикс24 (коробка) |
|---|---|
| Модуль main | ≥ 23.0 (D7, EventManager, Option) |
| PHP | 8.2 и выше |
| Расширения PHP | OpenSSL (HMAC для TOTP), стандартные расширения Bitrix |
| БД | MySQL/MariaDB (таблицы модуля: устройства, recovery, trust, лог) |
| Рекомендации | HTTPS на боевом сайте; синхронизация времени сервера (NTP) для TOTP; современные браузеры |
Совместимость приложений: Яндекс.Ключ / Яндекс ID, Google Authenticator, Microsoft Authenticator, Aegis, andOTP и другие клиенты с поддержкой otpauth://totp.
Поддержка осуществляется по будням с 8:00 до 17:00 по московскому времени. Скорость ответа зависит от загруженности команды и сложности вопроса, но в среднем составляет 1-2 рабочих дня.
Установите этот модуль прямо сейчас!
Для этого укажите адрес сайта:
Подтвердите что сама лицензия у вас куплена
