如何在注册用户的网站上完全集成XMPP

put*_*uan 15 php chat xmpp ejabberd

我们有一个社交网站,人们有联系,我们希望它与XMPP集成.我们目前使用ejabberd XMPP服务器.

这是我的问题:

  1. 如何正确创建帐户?现在,我正在考虑的是我们的网络应用程序上的用户注册,我们调用一个脚本来执行ejabberd命令来创建用户.

  2. 用户认证.用户在我们的网站上登录后,用户将自动登录聊天系统.你如何使用strophe.js在客户端执行此操作?据我所知,你需要提供JID和密码进行身份验证,所以我想在登录时会有一个ajax调用来获取用户的密码,然后在strophe.js的登录调用中使用响应文本.这样安全吗?还有其他方法吗?

  3. 在线注册.我们的网络应用程序有一个联系人系统,但XMPP有自己的方式通过在线订阅添加联系人,对吧?示例:当user1尝试添加user2时,在user1可以成为user2的联系人之前,将向user2询问授权.但由于我们的Web应用程序上已有联系人系统,因此我们希望绕过XMPP的此授权或禁止它,并在user2确认user1为我们网站上的联系人时使用脚本/命令进行授权.我还不清楚,但是一位同事说这可以在ejabberd的模块mod_admin_extra上实现(这个命令将创建订阅而无需客户端授权).是否有可能或者我必须使用脚本手动操作ejabberd数据库(前提是我从默认的Mnesia数据库转移到另一个数据库,比如MySQL).

提前致谢.

Jul*_*oux 10

我们(superfeedr)有一个类似的Web应用程序,其中XMPP是应用程序的一部分.

我们做出的选择是不在Web应用程序存储和XMPP服务器上复制用户数据.您可以使用带有ejabberd的Web应用程序的数据存储构建自己的身份验证机制,这非常简单.这样,您只有一个存储用户数据的单一位置,而不必创建ejabberd用户.

通过这样做,您还可以在Web应用程序上登录您的用户,而无需知道他们的密码,甚至可以将其存储在明确:).最简单的方法就是做(通过波什)会话身份验证的服务器上,并通过对会话ID的HTML响应,如这里所描述,通过@metajack.

第三部分可能是最棘手的,但我确实你可以绕过这个而不是使用内置的"名单"......但是它可能涉及创建你自己的组件(内部或外部).


put*_*uan 8

好的,这就是我们做的:

1)我们在用户注册后在XMPP上创建用户帐户,而不是自定义身份验证/外部身份验证.

2)Julien指出,答案就是会话附件.我们创建了一个PHP脚本,用于创建会话并返回会话ID和RID.在用户登录时通过AJAX调用(在文档准备好之后).

3)正如我在对Julien的帖子发表的评论中所说,我们使用了mod_admin_extra.我们结合mod_rest(w/c允许您发送节样式/运行命令REST样式)来创建名单.mod_admin_extra上有一个*add_rosteritem*命令,每次用户在我们的网站上创建联系人时都会调用该命令.