шлепнуть Plain SASL на тарабарщину

Я использую smack 4.2.1 и пытаюсь подключиться к серверу ejabberd. Сервер использует простой механизм SASL от auth.

Я могу пройти аутентификацию, если использую другую библиотеку, например babbler. А вот с привкусом мне не везет.

Я продолжаю получать исключение ниже

Exception in thread "main" java.lang.NullPointerException
at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:64)
at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:60)
at org.jivesoftware.smack.util.stringencoder.Base64.encodeToString(Base64.java:42)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:212)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:170)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:202)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginInternal(XMPPTCPConnection.java:386)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:493)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:467)

Мой код

XMPPTCPConnectionConfiguration c = XMPPTCPConnectionConfiguration.builder().setHost("api.coredial.com")
            .setHostAddress(InetAddress.getByName("api.coredial.com")).setDebuggerEnabled(true).setPort(5222)

            .setXmppDomain(String.valueOf(JidCreate.bareFrom("api.coredial.com")))
            .setUsernameAndPassword(userName,password)


            .setHostnameVerifier(new HostnameVerifier() {
                public boolean verify(String s, SSLSession sslSession) {
                    return true;
                }
            }).build();


    XMPPTCPConnection con = new XMPPTCPConnection(c);


    // Connect to the server
    con.connect();
    //con.login();
    con.login(userName,password);

Любое предложение будет оценено.


person Shahed    schedule 06.11.2017    source источник


Ответы (1)


Мне удалось решить проблему после включения зависимости smack-java7 и smack-sals-javax в мой pom.xml.

Я считаю, что добавление банок, по-видимому, приводит к тому, что статические инициализаторы добавляют инициализацию, необходимую для включения простого sasl.

person Shahed    schedule 07.11.2017
comment
Вы действительно не должны добавлять банки в свой проект в 2017 году. Используйте систему сборки, которая может использовать артефакты Maven. Тогда вы не удивитесь, почему инициализируется только часть smack. - person Flow; 08.11.2017