0

这里有这些外部脚本:https ://docs.ejabberd.im/admin/configuration/authentication/#external-script

除了说“将您的配置文件指向您编写的脚本的位置”和示例列表之外,它的文档为零。但是没有关于您需要在脚本中做什么的信息。我查看了一些示例,似乎它期望某些输出为stdout. 但我不知道是什么!此外,身份验证是否适用于用户创建之类的事情?我的目标是能够拥有一个带有 Django 身份验证的 Django 项目,这将允许我登录到我编写的多个不同程序。使用外部脚本时,身份验证到底在做什么?如果我只是简单地接受所有用户并制作一个批准所有内容和所有人的脚本会发生什么?如果我允许使用无效 URL 的用户怎么办?例如,他们尝试使用以下主机登录ejabberd.yml文件?如果ejabberd.yml文件只有 localhost 和 myexamplesite.com 作为主机,并且我对来自 Pizzahut.com 的用户进行身份验证,该怎么办?ejabberd 如何处理这个问题?authenticationejabberd到底是什么意思?

在不修改源代码的情况下,我想做的事情是可能的吗?

4

1 回答 1

0

这里有这些外部脚本: https ://docs.ejabberd.im/admin/configuration/authentication/#external-script 但是没有关于你需要在脚本中做什么的信息。

在那个页面有一段说:

ejabberd 和脚本之间接口的详细信息在 Developers Internals 部分中描述:External

你有没有点击那个链接?它并没有解决你的任何疑问?

使用外部脚本时,身份验证到底在做什么?

ejabberd_auth_external 运行 extauth,它将相应的查询发送到您的 extauth 脚本,并期望回复是/否。

如果我只是简单地接受所有用户并制作一个批准所有内容和所有人的脚本会发生什么?

那么,所有通过 ejabberd 要求的注册和登录尝试都将成功。事实上,ejabberd 中包含一个示例 extauth 脚本,它正是这样做的,请参阅https://github.com/processone/ejabberd/blob/master/examples/extauth/check_pass_null.pl

如果我允许使用无效 URL 的用户怎么办?

我不明白 XMPP 场景中 HTTP URL 的上下文是什么。

您是指无效的 JID,例如 username@username@server 吗?ejabberd 将在流程到达您的 extauth 脚本之前很久就拒绝使用此类 JID 进行帐户注册或登录尝试

例如,他们尝试使用不在 ejabberd.yml 文件中的主机登录?

同样,ejabberd 将在流程到达您的 extauth 脚本之前很久就拒绝使用此类 JID 进行帐户注册或登录尝试

如果 ejabberd.yml 文件只有 localhost 和 myexamplesite.com 作为主机并且我对来自 Pizzahut.com 的用户进行身份验证怎么办?

客户端可能会尝试进行身份验证,但 ejabberd 会立即以流错误 host-unknown 拒绝它;你的 extauth 脚本甚至没有被调用。尝试使用 check_pass_null.pl,该 extauth 脚本接受所有内容,但 ejabberd 不接受。

ejabberd 如何处理这个问题?

如前所述,在阅读https://docs.ejabberd.im/developer/guide/#external上的文档后,这对我来说很有意义

身份验证对 ejabberd 到底意味着什么?

你到底是什么意思?

在不修改源代码的情况下,我想做的事情是可能的吗?

如果您有自定义数据库,那么只要您编写使用自定义数据库的 extauth 脚本,就可以使用该功能。

顺便说一句,一旦你编写了你的​​脚本,如果它是全新的(而不是对现有脚本的小定制),我想你会在某个地方发布它,这样其他 Django 管理员可以从你的工作中受益,对吧?

PD:https ://github.com/processone/ejabberd/discussions/3760

于 2022-01-27T11:23:01.557 回答