Vysper 服务器登录失败



我正在制作一个vysper xmpp服务器。这是我的代码:

public static void main(String[] args) throws Exception {
    XMPPServer server = new XMPPServer("myserver.org");
    StorageProviderRegistry providerRegistry = new MemoryStorageProviderRegistry();
    AccountManagement accountManagement = (AccountManagement) providerRegistry.retrieve(AccountManagement.class);
    Entity user = EntityImpl.parseUnchecked("user@myserver.org");
    accountManagement.addUser(user, "password");
    server.setStorageProviderRegistry(providerRegistry);
    server.addEndpoint(new TCPEndpoint())
    server.setTLSCertificateInfo(new File("keystore.jks"), "boguspw");
    //server.setTLSCertificateInfo(new File("bogus_mina_tls.cert"), "boguspw");
    server.start();
    System.out.println("Vysper server is running...");
    server.addModule(new EntityTimeModule());
    server.addModule(new VcardTempModule());
    server.addModule(new XmppPingModule());
    server.addModule(new PrivateDataModule());
}

我已经尝试了这两个证书文件。(keystore.jks,bogus_mina_tls.cert)

启动服务器后,它会连接到它,并尝试登录但无法登录。

SmackConfiguration.setPacketReplyTimeout(5000);

    config = new ConnectionConfiguration("myserver.org", port, "localhost");
    config.setSelfSignedCertificateEnabled(true);
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
    config.setSASLAuthenticationEnabled(true);

//config.setKeystorePath("keystore.jks");

//config.setTruststorePath("keystore.jks");

    config.setKeystorePath("bogus_mina_tls.cert");
    config.setTruststorePath("bogus_mina_tls.cert");
    config.setTruststorePassword("boguspw");
    XMPPConnection.DEBUG_ENABLED = true;
    connection = new XMPPConnection(config);
    try {
        connection.connect();
    } catch (XMPPException e) {
        System.out.println("Error connect");
        e.printStackTrace();
    }
    System.out.println("Connected: " + connection.isConnected());
    try {
        System.out.println(connection.isAuthenticated());
        connection.login("user", "password");
    } catch (XMPPException e) {
        System.out.println("Error login");
        e.printStackTrace();
    }

我发现这个异常:

SASL 身份验证纯素失败:编码不正确:在 org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:337) 在 org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203) at org.jivesoftware.smack.Connection.login(Connection.java:348) at com.protocol7.vysper.intro.WorkingClient.init(WorkingClient.java:57) 在 com.protocol7.vysper.intro.WorkingClient.(工作客户端.java:27) at com.protocol7.vysper.intro.Runclient.main(Runclient.java:11)

我已经看过这些例子(第 1 个、第 2 个),但它们不起作用。

首先请注意,服务器证书不用于用户身份验证,它用于在客户端和服务器之间提供安全的通信通道。

从日志中,您可以看到您的身份验证方法是"SASL PLAIN",使用用户和密码。

在服务器上,您将用户名/密码设置为:

accountManagement.addUser("user@myserver.org", "password");

但在您使用的客户端上

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

这不符合您发布的错误消息,但我建议您使用正确的用户/密码重试。

相关内容

最新更新