9

我正在尝试使用 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 连接时我需要选择“传统 SSL”,但我不确定如何在 Java 中执行此操作。

谢谢你的帮助

4

1 回答 1

20

尝试在用户名中login() 包含域部分:

connection.login("user", "password");

不是

connection.login("user@example.org", "password");
于 2013-10-15T06:43:47.277 回答