Ejabberd 用户身份验证失败,使用 mysql

Posted

技术标签:

【中文标题】Ejabberd 用户身份验证失败,使用 mysql【英文标题】:Ejabberd user auth failed with mysql 【发布时间】:2019-11-11 09:25:01 【问题描述】:

我已经使用下面的参考链接在我的本地系统中安装了 ejabberd 和 mysql。我正在使用 php 进行服务器端使用。

https://medium.com/modern-sysadmin/how-to-install-ejabberd-18-01-xmpp-server-with-mysql-on-ubuntu-16-04-f0facededf2e

一切正常。

我正在使用这个 PHP 脚本https://github.com/cweiske/xmpphp/

但问题是当我从 ejabberd 网络管理员添加用户时,它非常适合发送消息。但是当我直接在mysql用户表中添加用户时,两个用户都以相同的格式保存在用户表中,但是当我使用直接添加的用户名发送消息时它不起作用。

在终端中出现以下错误

09:49:48.239 [error] Supervisor ejabberd_c2s_sup had child undefined started with ejabberd_c2s,start_link,undefined at <0.2500.0> exit with reason no function clause matching base64:decode_binary(<<>>, <<"×mø">>, 57, 58) line 368 in context child_terminated

15:22:43.281 [error] CRASH REPORT Process <0.5360.0> with 0 neighbours exited with reason: no function clause matching base64:decode_binary(<<>>, <<"×mø">>, 57, 58) line 368 in p1_server:terminate/7 line 878

帮助我 ejabberd 如何与 mysql 用户一起工作? Ejabberd 将用户数据保存在其他任何地方吗?

【问题讨论】:

ejabberd 是什么版本,你安装的是什么erlang 版本?另外,您是否安装了任何其他自定义模块? 我在 ubuntu github.com/processone/ejabberd Ejabberd 版本是 19.09.1 从源代码安装的。 Erland 版本是 10.2.4 【参考方案1】:

但是当我直接在mysql用户表中添加用户时

我有两个想法,以便您调查您的问题:

如果您创建一个使用纯 ascii 字符(例如“user123”而不是“×mø”)的帐户,它会工作还是失败?

如果您使用“ejabberctl register”命令行注册帐户,而不是直接在数据库中插入元素,它会成功还是失败?

我怀疑问题出在插入数据库时​​的用户名或密码编码。

【讨论】:

以上是关于Ejabberd 用户身份验证失败,使用 mysql的主要内容,如果未能解决你的问题,请参考以下文章

如果我使用 Ejabberd 身份验证和 JWT,我不需要注册用户吗?

Ejabberd:仅对管理员使用内部身份验证

Ejabberd auth http 查询到 django 服务器未经身份验证

我可以使用 AWS Cognito 进行 Ejabberd 服务器身份验证吗?

ejabberd xmpp 连接未维护

Ejabberd 外部身份验证:extauth 脚本突然退出,原因为“正常”