0

我正在使用 Smack 客户端 4.3.1 并希望使用带内注册方法(使用 Smack 的 AccountManager)注册用户。

我可以使用“管理员”XMPP 连接创建新用户,并且用户是在管理员用户所在的域中创建的,比如 user1@ec2-xxxxx.us-west-2.compute.amazonaws.com

我的要求是,我想在另一个虚拟主机中创建用户 - 比如说 user1@example.com 使用相同的“管理员”XMPP 连接。是否可以 ?

我尝试使用具有管理员权限的用户“mnallath1@example.com”进行“带内注册”。它给出“XMPPError:冲突 - 取消”错误

我的代码是:

    AccountManager accountManager = AccountManager.getInstance(connection1);
    System.out.println("Is Account creation supported " +accountManager.isSupported() + " Account creation supported : " + accountManager.supportsAccountCreation());
    accountManager.sensitiveOperationOverInsecureConnection(true);

    EntityFullJid entityFullJid = JidCreate.entityFullFrom("user1@example.com/resource1");

    Domainpart domainpart = entityFullJid.getDomain();

    Localpart localpart = entityFullJid.getLocalpart();

    System.out.println("local part of account " + localpart);

    accountManager.createAccount(localpart, "password");

是否可以使用带内注册在 example.com 中创建 user1?

我的管理员用户

  admin:
    user:
      - "admin": "ec2-xxxxx.us-west-2.compute.amazonaws.com"
      - "mnallath1": "example.com"

我的虚拟主机

hosts:
  - "ec2-xxxxx.us-west-2.compute.amazonaws.com"
  - "example.com"
  - "example.net"
4

1 回答 1

1

查看源代码,现在允许使用 IBR 从另一个虚拟主机注册新帐户,即使使用管理员帐户完成也是如此。

函数 check_from 返回拒绝,因为使用的帐户不属于尝试注册的虚拟主机: https ://github.com/processone/ejabberd/blob/master/src/mod_register.erl#L260

于 2019-06-13T08:12:31.173 回答