这里有这些外部脚本:
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