Как связать Ejabberd или MongooseIM с Node.js (или Django)

Я хочу разработать внутренний сервер для приложения чата, используя node.js (или Django) и Ejabberd или MongooseIM. И использовать этот API в приложении React Native, которое должно иметь push-уведомления.

Идея состоит в том, чтобы управлять профилем пользователя и метаданными, а также аутентификацией ( OAuth 2.0 - социальная регистрация) через мой собственный сервер, а затем передавать управление чатом на сервер Ejabberd или MongooseIM.

Проблемы приходят о том, как установить соединение между серверами. Я хочу войти через мой сервер и не информировать пользователя о существующем сервере Ejabberd или MongooseIM.

Любая идея о том, как я могу установить соединение между серверами?

1 ответ

Решение

Проблемы приходят о том, как установить соединение между серверами. Я хочу войти через мой сервер и не информировать пользователя о существующем сервере Ejabberd.

Я думаю, что это не правильный путь

Вот как я это вижу и как я реализовал это в некоторых проектах:

1) пользователь входит в систему через API REST сервера приложений и получает токен сеанса или что-то вроде этого и user_id

2) затем этот пользователь использует этот user_id для создания JID для ejabberd, например, @ yourejabberdserver.com

3) Затем этот пользователь использует этот JID и маркер сеанса в качестве пароля и подключается к Ejabberd.

4) Ejabberd в этом случае проверяет токен сеанса (он попадает в вашу базу данных сервера приложений и проверяет, или, если вы используете токен JWT, он просто проверяет его). В Ejabberd вы можете сделать это, реализовав внешнюю аутентификацию скрипта:

Этот подход избавляет вас от регистрации 2-й учетной записи (на стороне Ejabberd), поэтому вы используете одинаковые учетные данные пользователя в обоих приложениях (Server App & Ejabberd)

Другие вопросы по тегам