![让 xmpp (ejabberd) 服务器使用现有用户数据库 (MySQL) 进行身份验证](https://linux22.com/image/679988/%E8%AE%A9%20xmpp%20(ejabberd)%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8%E7%8E%B0%E6%9C%89%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE%E5%BA%93%20(MySQL)%20%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
首先我要声明的是,我对 XMPP 协议或实时通信知之甚少。不过,我设法设置了一个带有 TLS 加密的 ejabberd 服务器。我编写了一个 PHP 网站,其中自定义用户系统保存在 MySQL 数据库中。用户数据库如下所示:
- 我的数据库
- 用户表
- 用户ID
- 用户名
- 密码(散列)
- 盐
- 会话表
- uid 外键
- 会话密钥(散列)
- 用户表
我在网站上验证用户身份的方法是使用通常的密码与盐和哈希相结合的方法。对于正在运行的会话,我会将会话密钥放在他们的浏览器会话中,并在页面加载时检索它以进行验证。
我的问题: 看来 XMPP 服务器有自己的用户身份验证系统。我希望它使用我现有的系统,这样登录的用户就可以立即初始化聊天,而无需单独注册和登录。这也将使验证用户变得更加容易。
我在某处读到过,MySQL 身份验证对于 XMPP 来说很糟糕: 我听说它占用大量资源,因为出于某种原因,每次用户发送消息时它都必须对用户进行身份验证。如果这是真的,那么自动注册新用户的最佳方法是什么?我想我会自己弄清楚用户的验证,只要知道我可以将所需的任何信息传递给登录用户的 xmpp 客户端,无论是用户名/uid 还是其他什么。