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 auth http 查询到 django 服务器未经身份验证