Двофакторна аутентифікація в Redmine

З давніх пір для другого кроку аутентифікації ми використовували одноразові паролі надсилаються через СМС. Такий функціонал з'явився в Redmine 2013, коли ми розробили плагін redmine_sms_auth. Про це ми писали в давньої статті.
Але час не стоїть на місці. Ми активно впроваджуємо Telegram в бізнес-процеси компанії (раз, два, три).
У зв'язку з цим вирішили зробити аутентифікацію через Telegram в Redmine. Заодно з цим переписати старий плагін про СМС і додати підтримку Google Authenticator.

Далі ми розповімо про те як встановити, налаштувати і використовувати цей плагін.
Установка
Заходимо в папку з плагінами
cd plugins

Клонируем репозиторій
git clone https://github.com/centosadmin/redmine_2fa.git

Переходимо в корінь Redmine
cd ..

Встановлюємо потрібні геми
bundle install

Виконуємо міграції
rake redmine:plugins:migrate

Доповнюємо конфіг
config/configuration.yml

# specific configuration options for production environment
# that overrides the default ones
production:
redmine_2fa:
sms_command: 'echo %{phone} %{password}'

sms_command
впишіть системну команду, якої будуть відправлятися повідомлення.
Такий підхід використовується для сумісності з більшістю API СМС-шлюзів. Швидше за все у вашому випадку буде щось на зразок
/usr/bin/curl "https://sms.ru/api/send?phone=%{phone}&message=code: %{password}"

Перезапускаємо Redmine.
Налаштування
Попередні вимоги
Так веб-хуки від Telegram відправляються тільки на HTTPS адреси, ваш Redmine повинен бути налаштований на використання цього протоколу.
Обов'язкове використання
За замовчуванням вимкнено, щоб після встановлення плагіну ви могли вибрати «не використовувати» і увійти в Redmine.
Але краще включити, щоб випадкові перехожі, які дізналися пароль одного з користувачів не змогли увійти в систему.

Налаштування Telegram
Для аутентифікації через Telegram потрібно завести окремого бота. Бота створюємо за допомогою @BotFather. Інструкція зі створення бота.

Отриманий від нього ключ вводимо в налаштування і натискаємо Застосувати.
Ініціалізація бота
Після того як токен збережений, потрібно ініціалізувати бота.

При ініціалізації в систему буде завантажено ім'я бота, щоб показати посилання на нього на етапі ініціалізації.
Також буде встановлено веб-хук — адресу на яку будуть надходити запити від API в разі, якщо хтось напише боту.
В колишніх плагінах ми використовували бото-процеси, оскільки там великий вхідний трафік.
Тут же вирішили виключити зайвий елемент з системи.
Важливо! При зміні сертифіката потрібно Ініціалізувати бота ще раз.
Деактивація бота
Ця функція стане в нагоді, якщо
  • ви вирішите використовувати цього бота десь ще
  • з якихось причин вам потрібно перейти на іншого бота.

У процесі деактивації скидається токен і деактивуються всі користувачі, що використовують плагін.
При наступному вході в систему їм потрібно буде додати собі в контакти нового бота.
Важливо! Не забудьте активувати бота, коли введете і збережіть новий маркер.
А як це з боку користувача?
Перший вхід
При першому вході користувач може вибрати один із способів аутентифікації або відмовитися від використання другого фактора.

Відмовитися він зможе тільки в тому випадку, якщо ви дозволили це в налаштуваннях плагіна.
Telegram

Після команди /start бот збереже в Redmine ваш аккаунт Telegram і запропонує пов'язати його з вашим акаунтом у Redmine

Вводимо запропоновану команду

І отримуємо на пошту лист

При переході по посиланню побачимо повідомлення

і форму логіна.
Треба ввести логін і пароль ще раз.
Після чого побачимо форму введення одноразового паролю

і отримаємо заповітний код від бота

Налаштування Telegram — найскладніша. Але заради зручності у використанні хвилину витратити не шкода.
Google Auth
Аутентифікація через гугл налаштовується простіше всього. Сосканируйте QR-код додатку та натисніть «Далі».

SMS
Для отримання кодів через СМС потрібно спершу підтвердити номер телефону, на який ви будете отримувати СМС з одноразовими паролями.

Міграція зі старого плагіна
Якщо ви користувалися нашим старим плагіном, то краще перейти з нього на новий. Детальна інструкція про перехід доступна здесь.
Скидання налаштувань 2FA
Може трапитися що користувач захоче змінити спосіб аутентифікації. На його сторінці є спеціальна посилання для цього.

Після скидання налаштувань при наступному логін користувачеві буде запропоновано вибрати спосіб аутентифікації.
Що далі?
Тепер ви знаєте, як додати двофакторну аутентифікацію в Redmine. Саме час застосувати отримані знання на практиці.
На питання про плагіні готові відповісти в коментарях до цієї публікації.
Запити про розширення функціоналу і баг-репорти приймаються тут же, а також у тікета репозиторію.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.