创建新用户时 Smack XMPP 错误:禁止 - auth

Posted

技术标签:

【中文标题】创建新用户时 Smack XMPP 错误:禁止 - auth【英文标题】:Smack XMPP error while creating new user: forbidden - auth 【发布时间】:2015-05-13 09:28:54 【问题描述】:

我正在尝试通过管理员帐户创建新用户。但我收到身份验证错误。 我尝试了this 之类的答案,但没有帮助。

我创建新用户的代码:

AccountManager accountManager = AccountManager.getInstance(mConnection);

        if (accountManager.supportsAccountCreation()) 
            try 
                accountManager.createAccount(username, password);
            

            catch (XMPPException ex) 
                LOG.info(ex.getMessage(), ex);
            

        
        else
            LOG.error("Server doesn't support creating new accounts");
        

我允许在配置中注册 ALL:

access, register, [allow, all].

access, register_from, [allow, all].

mod_register, [
 ...
 ip_access, [allow, "127.0.0.0/8",
              deny, "0.0.0.0/0"],
 access_from, register_from,
 access, register
],

即使有这个配置我也有错误:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: forbidden - auth
    at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:135)
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213)
    at org.jivesoftware.smackx.iqregister.AccountManager.createAccount(AccountManager.java:272)
    at org.jivesoftware.smackx.iqregister.AccountManager.createAccount(AccountManager.java:244)

附言 Smack 4.1.0

【问题讨论】:

你确定你对ip_access, [allow, "127.0.0.0/8", deny, "0.0.0.0/0"]没问题,即你是从本地主机连接的吗? @erszcz 哦,忘了这个。在允许列表中添加了我的 ip -> 现在它可以工作了。谢谢,伙计。 @erszcz 但它仅适用于 [allow, all] 和 [allow, admin] 我收到相同的错误 =/ 我不确定您的代码 sn-p 的上下文,但也许用户未通过管理员身份验证?基本上,此机制用于为您自己注册一个帐户,即匿名用户连接到服务器,为他/她自己注册一个帐户,然后(然后可能重新连接并)使用新帐户进行身份验证。如果您想对帐户创建进行更严格的控制,请使用命令行mongooseimctl 或自定义身份验证模块。 @erszcz yeh, mb custom auth module - 是最佳选择。 【参考方案1】:

解决方案:

step1:

step2:

step3:

完成所有这三个步骤后,运行您的程序,您将能够在ejabberd 服务器上注册一个新用户。

【讨论】:

以上是关于创建新用户时 Smack XMPP 错误:禁止 - auth的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 注销(Smack API)

收到消息时通知 XMPP + Smack

XMPP Smack 4.1.0 检查用户是不是已经注册

如何在 xmpp smack 或 asmack 中将文件发送给离线用户?

Grails XMPP 聊天网站

使用 xmpp + smack + openfire 在 android 中阻止用户