- PVSM.RU - https://www.pvsm.ru -

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

С давних пор для второго шага аутентификации мы использовали одноразовые пароли отправляемые через СМС. Такой функционал появился в Redmine в 2013, когда мы разработали плагин redmine_sms_auth [1]. Об этом мы писали в давней статье [2].

Но время не стоит на месте. Мы активно внедряем Telegram в бизнес-процессы компании (раз [3], два [4], три [5]).

В связи с этим решили сделать аутентификацию через Telegram в Redmine. Заодно с этим переписать старый плагин про СМС и добавить поддержку Google Authenticator.

Двухфакторная аутентификация в Redmine - 1

Далее мы расскажем о том как установить, настроить и использовать этот плагин.

Установка

Заходим в папку с плагинами
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.

Настройка

Предварительные требования

Так как веб-хуки [6] от Telegram отправляются только на HTTPS адреса, ваш Redmine должен быть настроен на использование этого протокола.

Обязательное использование

По-умолчанию отключено, чтоб после установки плагина вы могли выбрать “не использовать” и войти в Redmine.

Но лучше включить, дабы случайные прохожие, узнавшие пароль одного из пользователей не смогли войти в систему.

Двухфакторная аутентификация в Redmine - 2

Настройка Telegram

Для аутентификации через Telegram нужно завести отдельного бота. Бота создаём с помощью @BotFather [7]. Инструкция по созданию бота [8].

Двухфакторная аутентификация в Redmine - 3

Полученный от него ключ вводим в настройки и нажимаем Применить.

Инициализация бота

После того как токен сохранён, нужно инициализировать бота.

Двухфакторная аутентификация в Redmine - 4

При инициализации в систему будет загружено имя бота, чтоб показать ссылку на него на шаге инициализации.

Также будет установлен веб-хук — адрес на который будут приходить запросы от API в случае, если кто-то напишет боту.

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

Важно! При смене токена нужно Инициализировать бота ещё раз.

Деактивация бота

Данная функция пригодится если

  • вы решите использовать этого бота где-то ещё
  • по каким-то причинам вам нужно перейти на другого бота.

Двухфакторная аутентификация в Redmine - 5

В процессе деактивации сбрасывается токен и деактивируются все пользователи, использующие плагин.

При следующем входе в систему им нужно будет добавить себе в контакты нового бота.

Важно! Не забудьте активировать бота, когда введёте и сохраните новый токен.

А как это со стороны пользователя?

Первый вход

При первом входе пользователь может выбрать один из способов аутентификации либо отказаться от использования второго фактора.

Двухфакторная аутентификация в Redmine - 6

Отказаться он сможет только в том случае, если вы разрешили это в настройках плагина.

Telegram

Двухфакторная аутентификация в Redmine - 7

После команды /start бот сохранит в Redmine ваш аккаунт Telegram и предложит связать его с вашим аккаунтом в Redmine

Двухфакторная аутентификация в Redmine - 8

Вводим предложенную команду

Двухфакторная аутентификация в Redmine - 9

И получаем на почту письмо

Двухфакторная аутентификация в Redmine - 10

При переходе по ссылке увидим сообщение

Двухфакторная аутентификация в Redmine - 11

и форму логина.

Нужно ввести логин и пароль ещё раз.

После чего увидим форму ввода одноразового пароля

Двухфакторная аутентификация в Redmine - 12

и получим заветный код от бота

Двухфакторная аутентификация в Redmine - 13

Настройка Telegram — самая сложная. Но ради удобства в использовании минуту потратить не жалко.

Google Auth

Аутентификация через гугл настраивается проще всего. Сосканируйте QR-код в приложении и нажмите “Далее”.

Двухфакторная аутентификация в Redmine - 14

SMS

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

Двухфакторная аутентификация в Redmine - 15

Миграция со старого плагина

Если вы пользовались нашим старым плагином [1], то лучше перейти с него на новый [9]. Подробная инструкция о переходе доступна здесь [10].

Сброс настроек 2FA

Может случиться что пользователь захочет сменить способ аутентификации. На его странице есть специальная ссылка для этого.

Двухфакторная аутентификация в Redmine - 16

После сброса настроек при следующем логине пользователю будет предложено выбрать способ аутентификации.

Что дальше?

Теперь вы знаете как добавить двухфакторную аутентификацию в Redmine. Самое время применить полученные знания на практике.

На вопросы о плагине готовы ответить в комментариях к этой публикации.

Запросы о расширении функционала и баг-репорты принимаются здесь же, а также в тикетах репозитория [11].

Автор: Centos-admin.ru

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/sms/199019

Ссылки в тексте:

[1] redmine_sms_auth: https://github.com/centosadmin/redmine_sms_auth

[2] давней статье: https://habrahabr.ru/company/centosadmin/blog/178073/

[3] раз: https://habrahabr.ru/company/centosadmin/blog/272051/

[4] два: https://habrahabr.ru/company/centosadmin/blog/303490/

[5] три: https://habrahabr.ru/company/centosadmin/blog/281044/

[6] веб-хуки: https://tlgrm.ru/docs/bots/api#setwebhook

[7] @BotFather: https://telegram.me/botfather

[8] Инструкция по созданию бота: https://tlgrm.ru/docs/bots#3-how-do-i-create-a-bot

[9] новый: https://github.com/centosadmin/redmine_2fa

[10] здесь: https://github.com/centosadmin/redmine_2fa/blob/master/README.ru.md#%D0%9C%D0%B8%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%81-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0-redmine_sms_auth

[11] тикетах репозитория: https://github.com/centosadmin/redmine_2fa/issues

[12] Источник: https://habrahabr.ru/post/312656/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best