disco#items返回错误代码403

时间:2015-01-13 12:51:17

标签: xmpp ejabberd service-discovery

我正在尝试获取在服务器上注册的所有用户的列表。我的服务器是Ejabberd。当我在all users节点上使用服务发现时,我收到403错误。这是我的请求节和错误节 -

请求

<iq id="U7" type="get" to="server.lt" xmlns="jabber:client">
  <query node="all user" xmlns="http://jabber.org/protocol/disco#items" />
</iq>

响应

<iq from="server.lt" to="user@server.lt/res" id="U8" type="error" xmlns="jabber:client">
  <query xmlns="http://jabber.org/protocol/disco#items" node="all users" />
  <error code="403" type="auth">
    <forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
  </error>
</iq>

当我在服务器上查看时,我没有找到任何mod_disco,所以我添加了新的mod_disco模块。我是否需要在服务器上进行进一步修改,或者我的请求节中是否有任何问题?

更新
我尝试给我的用户管理员访问权限并且命令确实有效,但是为每个用户提供管理员访问权限是不切实际的。有没有办法在不使用管理员访问权限的情况下使用客户端或服务器进行操作?

1 个答案:

答案 0 :(得分:1)

all users信息节点的访问进行了硬编码,以使用configure访问规则。在默认配置中,它设置为仅允许服务器管理员:

%% Only admins can use the configuration interface:
{access, configure, [{allow, admin}]}.

没有办法配置ejabberd来提供对all users的访问权限,而无需提供配置其他所有内容的权限,这是全部或全部。您必须更改源代码才能达到您想要的效果。