You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Smack 4.5在ejabberd 23.0注册用户时遇权限拒绝错误求助

问题描述

我尝试使用Smack库(4.5)在部署于AWS实例的*ejabberd服务器(23.0)*上注册新用户,但注册失败,报错如下:

XMPP error reply received from xxx.myejabberserver.com: XMPPError: forbidden - auth [Access denied by service policy]  

服务器日志

以下是ejabberd服务器的相关日志:

2024-11-22 12:34:56.789 [info] <0.543.0>@ejabberd_listener:accept:363 (#Port<0.1234>) Accepted connection 198.51.100.45:12345 -> 203.0.113.20:5222
2024-11-22 12:34:56.890 [info] <0.543.0> Processing incoming stanza:
<iq type='set' id='reg1' to='xxx.myejabberserver.com'>
  <query xmlns='jabber:iq:register'>
    <username>user102</username>
    <password>Abc@1234</password>
  </query>
</iq>

2024-11-22 12:34:56.891 [debug] <0.543.0> Checking ACL: 'register' for IP: 198.51.100.45
2024-11-22 12:34:56.891 [debug] <0.543.0> ACL 'register' matched: deny

2024-11-22 12:34:56.892 [info] <0.543.0> Outgoing stanza:
<iq type='error' id='reg1' to='198.51.100.45'>
  <error type='auth'>
    <forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
    <text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Access denied by service policy</text>
  </error>
</iq>

#iq{id = <<"U94W7-7">>,type = error,lang = <<"en-US">>, ...}
<text xml:lang='en' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Access denied by service policy</text>

配置详情

以下是我的ejabberd.yml配置的相关部分:

mod_register:
  access_from: "0.0.0.0"
  ip_access: "0.0.0.0"

acl:
  admin:
    user:
      - "admin@my.domain.com"
  local:
    user_regexp: ""

access_rules:
  register:
    allow: all
allow_registration_ips:
  allow: all

已尝试操作

  • 确认mod_register已启用且允许所有注册请求。
  • 检查acl和access_rules配置,确保无用户注册限制。
  • 重启ejabberd服务后重新测试。
  • 搜索同类问题并尝试相关修复方案,但均无效。

解决方案

从服务器日志的ACL 'register' matched: deny可以明确,注册请求被ACL规则拒绝,问题出在mod_register的参数配置错误:

  1. 修正mod_register配置
    access_from参数需要引用access_rules中定义的规则名称,而非直接写IP地址;ip_access需要引用acl中定义的IP规则名称。修改后的配置如下:

    mod_register:
      access_from: register  # 对应access_rules里的register规则
      ip_access: allow_registration_ips  # 对应自定义的IP访问规则
    

    如果不需要IP层面的限制,也可以简化为:

    mod_register:
      access_from: register
    
  2. 验证配置
    修改完成后,重启ejabberd服务,再用Smack库测试用户注册即可。

内容的提问来源于stack exchange,提问作者Sravani ch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:57:14