使用
目前,Openfire和网站有单独的数据库,但它们是同步的。
我想要实现的是:
当用户登录到网站时,Converse还必须在整个用户会话untlil注销期间登录并创建与Openfire XMPP服务器的持久连接。
我所发现的
谷歌搜索了大量内容,并在匡威JS和Openfire网站上进行了研究。
请阅读,有预绑定性质和单次会话支持的逆JS,它允许实现我想要的。他们还为网站提供了PHP库的例子。
我所做的
Converse的初始脚本如下所示:
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
});据我所知,整个过程如下:

所以问题是
混乱从第二步开始:由于XMPP身份验证,我应该在PHP会话中保存用户的XMPP密码并以纯文本格式登录吗?还是我搞错了,有更安全的方法来实现它?
在第三步中,使用工作用户名和密码进行测试,得到Invalid challenge response received错误。是否有用于从PHP进行身份验证的工作库?
发布于 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文档链接到的库可以工作。很多人都用过。
https://stackoverflow.com/questions/32334337
复制相似问题