【发布时间】: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 - 是最佳选择。
标签: java xmpp smack mongoose-im