XMPPError:使用smack 4.1.2创建新用户时禁止身份验证错误

时间:2015-08-08 19:06:48

标签: ejabberd smack

我正在尝试使用smack客户端4.1.2创建用户。我收到了以下错误。

Send XML on stream = <<"<iq from='abc.example.com' to='admin@abc.example.com/Smack' id='Dym8b-14' type='error'><query xmlns=jabber:iq:register><password>xxxxxx</password><username>user</username><registered/></query><error code=403 type=auth><forbidden xmlns=urn:ietf:params:xml:ns:xmpp-stanzas/></error></iq>">>

我的ejabberd配置如下(.yml文件)

register_from:
admin: allow
...
access_from: register_from
access: register

我仍然遇到上述错误。请帮忙

添加代码段以显示我如何使用smack 4.1.0创建新用户

connection = new XMPPTCPConnection(getConnectionConfiguration());
                connection.connect();
                connection.login("admin", "admin");
                if(connection.isAuthenticated())
                {
                    AccountManager accountManager = AccountManager.getInstance(connection);
                    accountManager.sensitiveOperationOverInsecureConnection(true);
                    accountManager.createAccount(userName, password);
                    connection.disconnect();
                    // The account has been created, so we can now login
                    connection.login(userName, password);
                }

private XMPPTCPConnectionConfiguration getConnectionConfiguration()
{

    XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
              .setServiceName("abc.example.com")
               .setHost("abc.example.com")
               .setPort(5222)
              .build(); 

    return config;
}

2 个答案:

答案 0 :(得分:6)

我发现了这个问题。这是由于trusted_network标签的值为loopback:在ejabberd配置文件中允许。我把它改成了所有:允许。它开始运作了。

答案 1 :(得分:0)

您提供的配置片段太小且收缩得很差,因此无法告诉您配置中的错误。

但是,考虑到您的配置是正确的,您应该在发送注册请求之前检查您的用户是否使用正确的ACL凭据进行了正确的身份验证。大多数客户端库都假定自己进行用户注册,并尝试在进行任何形式的身份验证之前发送注册表。