0

更新的答案

所以我有一个可以注册和登录的移动应用程序(当然还有其他功能,但在这种情况下它们并不重要)。现在我想向这个应用程序添加聊天功能。我安装了 eJabberd,导入了 SQL 脚本并启用了 SQL。这里的结果是两个用户表,一个应用程序用于注册和登录,另一个是通过导入 ejabberd 脚本创建的,ejabberdctrl 默认注册其用户。

然后我设置了外部身份验证,它使用应用程序用户表(不是由 ejabberd 创建的)。

现在我的问题是,通过这种绕过 ejabberd 用户表的设置,ejabberd 服务器还能工作吗?例如,我试图思考当 ejabberd 不了解应用程序用户表并且其表为空时,它将如何组织帐户名册?

换句话说,我如何告诉 ejabberd 将我的自定义应用程序表用于所有用户操作而不是其默认表?我想避免在两个表中插入数据。

旧问题(保留答案上下文)

我有一个有效的 ejabberd 安装,使用自定义脚本验证登录。它工作正常。但是现在我面临一个问题,这更多的是预见到的问题而不是实际遇到的问题。

到目前为止,我已经在 ejabberd 用户表和自定义用户表中复制了用户。这意味着我需要将数据发布到我的注册 API 以及 ss ejabberd API。有没有办法告诉 ejabberd 在配置中使用某些表作为用户表?或者如果我只是忽略用户表而不完全注册和使用 ejabberd 会安全吗?ejabberd 的其余部分会起作用吗?

4

2 回答 2

1

无论存在(或不存在)哪些表以及它们具有哪些内容,ejabberd 都将仅使用您在 auth_method 中定义的表,如身份验证文档中所述:

auth_method: internal

ejabberd 将使用 Mnesia 内部数据库中的“passwd”表。

auth_method: sql

ejabberd 将使用您配置的 SQL 数据库中的“用户”表。

auth_method: external

ejabberd 将使用 extauth 脚本。

auth_method: [sql, external]

ejabberd 将首先尝试使用 sql。如果失败,它将使用外部。我不知道这里的细节,也没有找到文档,幸运的是你不需要这样做。

换句话说,我如何告诉 ejabberd 将我的自定义应用程序表用于所有用户操作而不是其默认表?

现在答案很简单:

auth_method: external
于 2022-01-11T14:36:37.450 回答
0

我有一个有效的 ejabberd 安装,使用自定义脚本验证登录。

您使用的是什么身份验证方法,来自https://docs.ejabberd.im/admin/configuration/authentication/中记录的那些?

您使用的是“外部”吗?

到目前为止,我已经在 ejabberd 用户表和自定义用户表中复制了用户。

这个怎么可能?如果您使用“外部”身份验证脚本,则帐户凭据(用户名+密码)不会存储在 ejabberd 中。

什么是“ejabberd 用户表”?什么是“自定义用户表”?

您的设置中有一些神秘的东西,无法帮助您。

于 2022-01-10T15:33:09.710 回答