首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在逆向JS和Openfire服务器之间创建持久连接

在逆向JS和Openfire服务器之间创建持久连接
EN

Stack Overflow用户
提问于 2015-09-01 14:31:57
回答 1查看 1.7K关注 0票数 5

使用

  • 逆JS v0.9.5作为信使的网络前端
  • Openfire XMPP服务器v3.10.2作为信使的后端
  • Web应用程序本身是用PHP编写的。

目前,Openfire和网站有单独的数据库,但它们是同步的。

我想要实现的是:

当用户登录到网站时,Converse还必须在整个用户会话untlil注销期间登录并创建与Openfire XMPP服务器的持久连接。

我所发现的

谷歌搜索了大量内容,并在匡威JS和Openfire网站上进行了研究。

请阅读,有预绑定性质单次会话支持的逆JS,它允许实现我想要的。他们还为网站提供了PHP库的例子。

我所做的

Converse的初始脚本如下所示:

代码语言:javascript
运行
复制
converse.initialize({
    bosh_service_url: 'https://bind.example.com',
    keepalive: true,
    jid: 'me@example.com',
    authentication: 'prebind',
    prebind_url: 'http://example.com/api/prebind',
    allow_logout: false
});

据我所知,整个过程如下:

  1. 将jid发送到prebind_url,即http://example.com/api/prebind (查看上面的配置属性)
  2. PHP后端接收jid (即用户名)。若要在XMPP服务器密码中进行身份验证,登录必须采用纯文本格式。逆流JS,据我所知,为了保持用户登录信使,可以在每次需要时(jid、sid、rid)向http://example.com/api/prebind发送请求。因此,在PHP方面,每一次都需要准备纯文本身份验证。
  3. PHP后端使用PHP库从XMPP (jid、sid、rid)获得结果
  4. 返回jid,sid,rid作为JSON

所以问题是

混乱从第二步开始:由于XMPP身份验证,我应该在PHP会话中保存用户的XMPP密码并以纯文本格式登录吗?还是我搞错了,有更安全的方法来实现它?

在第三步中,使用工作用户名和密码进行测试,得到Invalid challenge response received错误。是否有用于从PHP进行身份验证的工作库?

EN

回答 1

Stack Overflow用户

发布于 2015-09-03 07:14:08

混乱从第二步开始:由于XMPP身份验证,我应该在PHP会话中保存用户的XMPP密码并以纯文本格式登录吗?还是我搞错了,有更安全的方法来实现它?

您需要一些方法来对XMPP服务器进行身份验证。一种方法是将用户名和密码存储在明文中,并使用它们登录。这样做有明显的缺点。

另一种方法是让XMPP服务器针对某些外部服务(所谓的外部身份验证)进行身份验证。通常,您希望这个外部服务成为您自己的后端应用程序。

例如,您可以将JID和一个特殊生成的令牌作为密码发送到XMPP服务器。然后,XMPP服务器使用外部身份验证来调用其他一些are服务(例如,您的webapp)来检查该JID和令牌是否有效。

每次进行身份验证时,都会生成一个新令牌。这样,您根本不需要存储任何密码,但是您需要跟踪(并使临时令牌失效)。

下面是ejabberd:https://www.ejabberd.im/extauth的外部身份验证脚本的一些示例

在第三步,当测试时使用工作用户名和密码获得无效的挑战响应收到错误。是否有用于从PHP进行身份验证的工作库?

据我所知,从converse.js文档链接到的库可以工作。很多人都用过。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32334337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档