Методы авторизации ботов в Rocket.Chat
Rocket.Chat предлагает несколько способов авторизации ботов для взаимодействия с его API. В этом отчете рассмотрены основные методы авторизации, настройка окружения для ботов и практические примеры интеграции.
Основные методы авторизации
Rocket.Chat предоставляет разнообразные методы аутентификации для безопасного взаимодействия с API, начиная от базовой аутентификации с именем пользователя и паролем до интеграции OAuth с такими сервисами, как Google, Facebook и Twitter[^1].
Аутентификация через токены
Для доступа к защищенным конечным точкам в API Rocket.Chat необходимо включить ID пользователя и действительный токен аутентификации в заголовки запроса:
-
x-Auth-Token
— для токена аутентификации
-
x-User-Id
— для ID пользователя[^1]
В Rocket.Chat существует два основных типа токенов аутентификации:
1.
authToken — временный токен аутентификации, который возвращается пользователям после успешного входа через любую конечную точку входа. Администраторы рабочего пространства также могут создать authToken для пользователя через конечную точку Create User Token[^1].
2.
personal access token — постоянные токены аутентификации, которые пользователи могут генерировать для себя, чтобы безопасно получить доступ к API без раскрытия своих основных учетных данных[^1].
Настройка конфигурации бота
Независимо от типа бота, SDK Rocket.Chat требует создания конфигурации с переменными окружения. Эта конфигурация может храниться в файле
.env
для локальной разработки, а в производственной среде эти переменные должны устанавливаться при запуске сервера[^2].
Переменные окружения для ботов
Для настройки бота в Rocket.Chat используются следующие переменные окружения:
Обязательные параметры:
-
ROCKETCHAT_URL — URL-адрес экземпляра Rocket.Chat для подключения
-
ROCKETCHAT_AUTH — метод авторизации для бота (по умолчанию: password)
-
ROCKETCHAT_USER — имя пользователя бота (учетная запись, с которой пользователи будут вызывать бота)
-
ROCKETCHAT_PASSWORD — пароль пользователя бота[^2]
Параметры ответа на сообщения:
-
RESPOND_TO_DM — получение обратных вызовов потока для личных сообщений с ботом (true/false)
-
ROCKETCHAT_ROOM — получение обратных вызовов потока от перечисленных каналов[^2]
Типичный набор переменных для большинства ботов, которые должны слушать и отвечать на прямые сообщения и все новые публичные каналы и приватные группы:
RESPOND_TO_DM=true
ROCKETCHAT_ROOM=''
Важно отметить, что необходимо добавить пользователя бота в качестве участника канала, прежде чем бот сможет отвечать на сообщения в этом канале[^2].
Практические примеры авторизации
Пример работы через 1С
Интересно, что для работы с API Rocket.Chat из 1С предварительно не требуется создавать бота на сервере Rocket.Chat или какие-либо дополнительные токены. Достаточно знать логин и пароль пользователя с необходимыми правами[^3].
Процесс подключения выглядит следующим образом:
1. Указать адрес сервера (без http или https)
2. Выбрать тип подключения (SSL или обычное)
3. При необходимости изменить порт
4. Ввести логин и пароль пользователя с нужными правами
5. Выполнить подключение для получения токена[^3]
После этого обработка получит токен и будет использовать его для авторизации до закрытия обработки или истечения срока действия токена.
Создание сервиса авторизации
Для более сложных сценариев, например, при необходимости авторизации пользователей в Rocket.Chat, которые уже авторизованы в другом веб-приложении, может потребоваться создание специального сервиса авторизации[^4].
Такой сервис можно реализовать с использованием Node.js:
1. Создать
auth-service
на Node.js
2. Настроить RocketChat для использования этого сервиса:
- Rocketchat -> Administration -> Accounts -> Iframe
- Указать URL для методов login и auth[^4]
Сервис авторизации должен предоставлять два API-метода:
-
login
— устанавливает файлы cookie для авторизации Rocket.Chat
-
auth
— добавляет информацию о пользователе в базу данных Rocket.Chat[^4]
Интеграция с другими платформами
API Rocket.Chat позволяет интегрировать его с различными сервисами, включая Discord Bot API. Такая интеграция позволяет автоматизировать отправку сообщений, управление серверами и каналами[^5].
Например, для взаимодействия с API Rocket.Chat через Pipedream можно использовать следующий код:
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
rocket_chat: {
type: "app",
app: "rocket_chat",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://${this.rocket_chat.$auth.domain}/api/v1/me`,
headers: {
"X-Auth-Token": `${this.rocket_chat.$auth["X-Auth-Token"]}`,
"X-User-Id": `${this.rocket_chat.$auth["X-User-Id"]}`,
},
params: {
userId: `${this.rocket_chat.$auth["X-User-Id"]}`,
},
})
},
})
Заключение
Авторизация бота в Rocket.Chat может быть выполнена несколькими способами в зависимости от требований и контекста использования. Самый простой подход — создать учетную запись пользователя для бота в Rocket.Chat и использовать учетные данные для получения токена авторизации. Для более сложных сценариев интеграции могут потребоваться специальные сервисы авторизации или интеграционные платформы.
Независимо от выбранного метода, необходимо обеспечить безопасное хранение учетных данных и токенов, а также предоставить боту только те права доступа, которые необходимы для выполнения его функций.
[^1]:
https://developer.rocket.chat/apidocs/introduction-to-authentication[^2]:
https://developer.rocket.chat/docs/bots-development-environment-setup[^3]:
https://infostart.ru/1c/tools/2129499/[^4]:
https://github.com/alekshura/RocketChat.Auth[^5]:
https://pipedream.com/apps/discord-bot/integrations/rocket-chat[^6]:
https://developer.rocket.chat/apidocs/rocketchat-api[^7]:
https://hostkey.ru/documentation/marketplace/communication/rocketchat/[^8]:
https://albato.ru/app-rocketchat[^9]:
https://github.com/RocketChat/Rocket.Chat.js.SDK[^10]:
https://developer.rocket.chat/apidocs/generate-personal-access-token#RocketChat #Messenger