我正在尝试使用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;
}
答案 0 :(得分:6)
我发现了这个问题。这是由于trusted_network标签的值为loopback:在ejabberd配置文件中允许。我把它改成了所有:允许。它开始运作了。
答案 1 :(得分:0)
您提供的配置片段太小且收缩得很差,因此无法告诉您配置中的错误。
但是,考虑到您的配置是正确的,您应该在发送注册请求之前检查您的用户是否使用正确的ACL凭据进行了正确的身份验证。大多数客户端库都假定自己进行用户注册,并尝试在进行任何形式的身份验证之前发送注册表。