Скинули задачку — настроить двухфакторную аутентификацию в NextCloud через Telegram. Принцип работы простой:
- Пользователь логинится в NextCloud.
- Пользователю в Телеграм от бота приходит код второго фактора.
- Пользователь указывает код и входит в NextCloud.
Создание бота в Telegram
Во-первых, нам понадобится бот в Телеграм для нашего NextCloud. Для управления ботами есть специальный бот @BotFather, добавляем его себе в контакты и пишем ему:
/start
Выводится справка по командам. Для создания бота пишем:
/newbot
Нам предлагают указать для бота name (имя), я пишу:
Zabbix internet-lab.ru
Нам предлагают указать для бота username (логин), он должен оканчиваться на "bot" или "Bot" я пишу:
zabbix_internet_lab_ru_bot
Бот создан, получаем токен "Use this token to access the HTTP API". Копируем токен, он нам понадобится для дальнейшей настройки.
Можно украсить бота, загрузить картинку и описание.
Two-Factor Gateway
Для аутентификации через Телеграм устанавливаем в NextCloud приложение Two-Factor Gateway.
Документацию по дальнейшей настройке бота можно найти здесь:
https://nextcloud-twofactor-gateway.readthedocs.io/en/latest/Admin%20Documentation/
Инструкцию по регистрации бота пропускаем, мы уже это сделали. Если не сделали, то делаем:
- Зарегистрируйте Telegram Bot.
- Откройте клиент Telegram client, найдите
@BotFather
и начните диалог. - Отправьте
/newbot
для создания бота. - Отправьте название бота, например,
'My own NC bot'
. - Отправьте имя бота, например,
'my_nc_bot'
. - BotFather создаёт бота и присылает токен, например,
'123456789:AAbbCCddEEffGGhhIIjjKKllMMnnOOppQQ'
.
А теперь нужно зайти в консоль сервера NextCloud и указать приложению токен:
occ twofactorauth:gateway:configure telegram Please enter your Telegram bot token: 123456789:AAbbCCddEEffGGhhIIjjKKllMMnnOOppQQ Using 123456789:AAbbCCddEEffGGhhIIjjKKllMMnnOOppQQ.
Файл occ должен иметь права на выполнение, скрипт выполнять нужно от имени пользователя, под которым работает NextCloud. К примеру:
cd /var/www/nextcloud
sudo chmod a+x ./occ
sudo -u www-data ./occ twofactorauth:gateway:configure telegram
Включение второго фактора
Дальше работаем от пользователя, которому нужно включить второй фактор.
Нам понадобится chat id пользователя из Telegram. Для получения chat id пользователю нужно в Telegram добавить бота @myidbot и отправить команду:
/getid
На самом деле таких ботов, которые возвращают идентификаторы довольно много.
Заходим к боту, которого мы создали в Телеграм и пишем ему:
/start
Логинимся в NextCloud и переходим к настройкам безопасности.
Переходим к разделу Telegram verification, нажимаем Enable.
Нужно ввести номер телефона или chat id, который мы узнали ранее. Поскольку номер телефона у многих скрыт, то лучше указывать chat id. Verify.
Бот присылает код подтверждения в телегу:
123456 is your Nextcloud verification code.
Копируем его в NextCloud. Confirm.
Успех.
Your account was successfully configured to receive messages via Telegram.
Проверка
Пробуем выполнить вход в NextCloud.
Требуется указать второй фактор, код которого высылает нам бот в Телеграм. Наш NextCloud стал ещё безопаснее.