Xmpp 允许ejabberd_服务(Jabber组件协议)修改用户';s名册

Xmpp 允许ejabberd_服务(Jabber组件协议)修改用户';s名册,xmpp,ejabberd,node-xmpp,Xmpp,Ejabberd,Node Xmpp,我试图使用ejabberd_服务(Jabber组件协议实现)将ejabberd与外部应用程序集成 用例是请求订阅,并由外部应用程序代表用户向用户的花名册添加项目。我同时管理ejabberd集群和外部应用程序,因此我假设它们彼此信任 问题是,即使正确地发送和接收了节,在用户的花名册中也看不到任何变化。即使我将服务检查从ejabberd_服务选项设置为false,并将ejabberd_服务作为经理添加到mod_花名册配置中,这也是正确的 我在ejabberd日志中也没有看到任何错误/警告 我想知道,

我试图使用ejabberd_服务(Jabber组件协议实现)将ejabberd与外部应用程序集成

用例是请求订阅,并由外部应用程序代表用户向用户的花名册添加项目。我同时管理ejabberd集群和外部应用程序,因此我假设它们彼此信任

问题是,即使正确地发送和接收了节,在用户的花名册中也看不到任何变化。即使我将服务检查从ejabberd_服务选项设置为false,并将ejabberd_服务作为经理添加到mod_花名册配置中,这也是正确的

我在ejabberd日志中也没有看到任何错误/警告

我想知道,根据XMPP协议,是否有可能通过外部受信任应用程序代表用户修改用户名册,如果有,如何在ejabberd中配置它?

ejabberd中包含支持,因为14.x版的Jabber组件协议(XEP-0114)明确规定它不能代表用户。它只能从其自己的子域中发送一个数据包

将来可能会通过在连接的XMPP服务器中提供具有更多功能的可信组件模型来改变这一点。然而,它还没有在ejabberd中实现


我认为目前最好的选择是编写一个自定义ejabberd插件或实现XEP-0356。

是的,我见过。不幸的是,它需要远程实体请求用户的许可,我需要避免。这没有实现:)您只需要将组件jid作为“管理器”添加到mod_花名册配置中,服务器将接受itI的花名册更改。我尝试将组件设置为mod_花名册的“管理器”。它不起作用。现在我想我可能不会在组件名中添加@sign和服务器名。我将尝试添加它。除非涉及用户的花名册,否则它可以完美地工作。发送状态节的效果和预期的一样。这正是我的观点。花名册操作要求组件代表域用户而不是组件发送节。这是XEP-0114不允许的。