Как связать 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)