我正在尝试使用Smack登录XMPP服务器。尝试登录时,我收到以下错误:
SASL身份验证PLAIN失败:未经授权
我已经能够使用具有相同凭据的PSI-IM连接并登录服务器。
这就是我目前所拥有的:
System.setProperty("smack.debugEnabled", "true");
XMPPConnection.DEBUG_ENABLED = true;
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
ConnectionConfiguration configuration = new ConnectionConfiguration("chat.bla.com", 5223);
configuration.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
configuration.setSocketFactory(new DummySSLSocketFactory());
configuration.setSASLAuthenticationEnabled(true);
configuration.setDebuggerEnabled(true);
configuration.setServiceName("bla.net");
Connection connection = new XMPPConnection(configuration);
try {
connection.connect();
connection.login("user@bla.net", "blablabla");
} catch (XMPPException e) {
e.printStackTrace();
}
这是我正在使用的DummySSLSocketFactory:http://svn.igniterealtime.org/svn/repos/spark/tags/spark_2_5_3_s/src/java/org/jivesoftware/spark/util/DummySSLSocketFactory.java
我认为问题在于我需要在通过PSI连接时选择“Legacy SSL”,但我不确定如何在Java中这样做。
感谢您的帮助
答案 0 :(得分:19)
尝试login()
,不用用户名中的域名部分:
connection.login("user", "password");
不
connection.login("user@example.org", "password");