Двухфакторная аутентификация для Redmine.
Поддерживает:
- Telegram
- SMS
- Google Authenticator
Описание плагина на habrahabr.ru
- redmine_bots
- HTTPS - нужен для того, чтобы принимать сообщение от Telegram Bot API (веб-хук)
- Ruby 2.3+
Начиная с версии 1.6.0 redmine_2fa зависит от redmine_bots вместо redmine_telegram_common. Пожалуйста, установите redmine_bots и следуйте инструкциям по миграции данных в его README.
Начиная с версии 1.4.0 redmine_2fa (так же, как и другие telegram-плагины от Southbridge) использует бота из redmine_telegram_common.
Чтобы произвести миграцию для использования единого бота, нужно выполнить команду bundle exec rake telegram_common:migrate_to_single_bot
.
Token бота будет взят из одного из установленных плагинов от Southbridge в следующем приоритете:
- redmine_chat_telegram
- redmine_intouch
- redmine_2fa
Начиная с версии 1.2.0 это плагин использует [redmine_telegram_common](https://github .com/southbridgeio/redmine_telegram_common).
Перед обновлением установите этот плагин.
После обновления запустите bundle exec rake redmine_2fa:common:migrate
для миграции пользоватльских данных в новую таблицу. В версии 2.0 модель RedmineTwoFa::TelegramAccount
будет упразднена, в месте с ней будет удалена старая таблица redmine_2fa_telegram_accounts
.
Бот может работать либо через web-hook либо через периодический опрос.
В этом плагине используется механизм web-hook, поэтому использование протокола HTTPS обязательно.
Если в разных плагинах один и тот же бот использует разные механизмы, приориетет отдаётся web-hook.
Инструкция по созданию бота: https://tlgrm.ru/docs/bots#3-how-do-i-create-a-bot
Чтобы добавить подсказки команд для бота, используйте команду /setcommands
в беседе с @BotFather. Нужно написать боту список команд с
описанием:
start - Начало работы с ботом
connect - Связывание аккаунтов Redmine и Telegram
help - Справка по командам
После добавления плагина в папку plugins
выполните следующие команды
bundle
bin/rake redmine:plugins:migrate
После установки плагина в настройках плагина нужно:
- ввести токен бота
- сохранить настройки
- инициализировать бота
Во время инициализации будут сохранены id и username бота и установлен web-hook, который будет обрабатывать команды направляемые боту.
При первом входе пользователю будет предложено выбрать способ аутентификации.
При выборе Telegram пользвателю нужно будет добавить себе бота, чтобы получать от него одноразовые пароли.
При добавлении бота, он предложит ввести команду /connect [email protected]
.
После выполнения команды пользователь получит письмо со ссылкой. Переход по ссылке свяжет аккаунты пользователя и он сможет получать одноразовые пароли от бота.
При выборе SMS пользвателю нужно ввести номер телефона, на который он будет получать СМС и подтвердить его.
В связи с тем, что различные СМС-шлюзы используют различные API, в плагине испольуется отправка СМС через системную команду. Пример для сервиса smsc.ru:
/usr/bin/curl --silent --show-error "https://smsc.ru/sys/send.php?charset=utf-8&login=smsclogin&psw=smscpassword&phones=%{phone}&mes=southbridge.io code: %{password} Expired at: %{expired_at}"
%{phone}
, %{password}
и %{expired_at}
системные переменные, которые будут замещены соответствующими значениями.
- phone - номер телефона в формате 7894561230 (только цифры, начинается с кода страны)
- password - одноразовай пароль
- expired_at - время после которого пароль перестаёт быть действительным (2 минуты от момента отправки сообщения)
Команда для отправки СМС указывается в файле config/configuration.yml
в секции production
:
# specific configuration options for production environment
# that overrides the default ones
production:
redmine_2fa:
sms_command: '/usr/bin/curl --silent --show-error "https://smsc.ru/sys/send.php?charset=utf-8&login=smsclogin&psw=smscpassword&phones=%{phone}&mes=southbridge.io code: %{password} Expired at: %{expired_at}"'
Это рабочий пример конфига. Если вы хотите польваться сервисом, после регистрации замените smsclogin
и smscpassword
актуальными данными.
-
обновите плагин redmine_sms_auth до последней версии из репозитория
-
обновите плагин redmine_2fa до последней версии
-
выполните команду
bundle install
-
выполните команду
bundle exec rake redmine:plugins:migrate
-
выполните команду
bundle exec rake redmine:plugins:migrate VERSION=0 NAME=redmine_sms_auth
-
удалите каталог с плагином
redmine_sms_auth
-
обновите настройки в файле
configuration.yml
-
было
production: sms_auth: command: 'echo %{phone} %{password}' password_length: 5
-
стало
production: redmine_2fa: sms_command: 'echo %{phone} %{password}'
-
-
перезапустите Redmine
Параметр password_length больше не используется, так как в Google Auth используется фиксированная длинна кода - 6 цифр.
В плагине redmine_sms_auth к польвателям было добавлено поле "Мобильный телефон", значение которого используется для отправки СМС.
При миграции в соотвествии с этой инструкцией поле будет сохранено и данные с номерами телефонов будут доступны в плагине redmine_2fa.
При выборе Google Auth пользвателю будет показан QR-код, который нужно сосканировать в приложении Google Authenticator.
Пользователь может сбросить способ двухфакторной аутентификации на странице "Моя учётная запись".
В настройках пользователя администратор может указать "Игнорировать 2FA".
Если в настройка плагина снята галка "Обязательно требовать выбрать один из способов аутентификации 2FA", то пользователь может выбрать "Не использовать" при первом входе в систему.
Плагин разработан Southbridge