Java XMPP client Smack 4.2.4 почему выходит ошибка «bad-auth/»?

Все привет, я начинающий и нашел в сети такой код клиента jabber:
package jabberIL;

    import java.io.IOException;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.lang.InterruptedException;
    import java.net.InetAddress;
    import javax.net.ssl.HostnameVerifier;
    import javax.net.ssl.SSLSession;
    import org.jivesoftware.smack.ConnectionConfiguration;
    import org.jxmpp.jid.DomainBareJid;
    import org.jxmpp.jid.EntityBareJid;
    import org.jxmpp.jid.impl.JidCreate;
    import org.jxmpp.stringprep.XmppStringprepException;
    import org.jivesoftware.smack.tcp.XMPPTCPConnection;
    import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
    import org.jivesoftware.smack.SmackException;
    import org.jivesoftware.smack.XMPPException;
    import org.jivesoftware.smack.AbstractXMPPConnection;
    import org.jivesoftware.smack.packet.Message;
    import org.jivesoftware.smack.chat2.ChatManager;
    import org.jivesoftware.smack.chat2.Chat;
    import org.jivesoftware.smack.chat2.IncomingChatMessageListener;

    public class JabberIL { 
        public static void main(String[] args) throws XmppStringprepException, SmackException, XMPPException, IOException, InterruptedException  {
            String msg;
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            InetAddress addr = InetAddress.getByName("ip_server"); 
            HostnameVerifier verifier = new HostnameVerifier() {
                    public boolean verify(String hostname, SSLSession session) {
                        return false;  // false 
                    }
            };

            DomainBareJid serviceName = JidCreate.domainBareFrom("name_server.ru"); 
            XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()                    
                        .setUsernameAndPassword("name","pass") 
                        .setPort(5222)
                        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                        .setXmppDomain(serviceName)
                        .setHostnameVerifier(verifier)                        
                        .setHostAddress(addr)
                        .setDebuggerEnabled(true)   
                        .setSendPresence(true)
                        .build();
            AbstractXMPPConnection conn1 = new XMPPTCPConnection(config);       

            conn1.connect();
            if(conn1.isConnected()){
                System.out.println("XMPP Connected");
            }   

            conn1.login();          

            ChatManager chatManager = ChatManager.getInstanceFor(conn1);    
            chatManager.addIncomingListener(new IncomingChatMessageListener() {
                public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) {                
                    System.out.println("Received message: " + message.getBody());
                }
            });
            Chat chat = chatManager.chatWith(JidCreate.entityBareFrom("to_name@server.ru"));
            while (!(msg = br.readLine()).equals("bye")) {
                chat.send(msg);
            }           
            //conn1.disconnect(); 
        }
    }


Он работает например при коннекте к jabber.ru (коннект, прием, отправка сообщений). Но когда я пытаюсь подключиться к своему серверу jabber в локальной корпоративной сети, то выходит такая ошибка , прилагаю полный стектрейс:
08:50:22 SENT (0): <stream:stream xmlns='jabber:client' to='server_name' xmlns:st
ream='http://etherx.jabber.org/streams' version='1.0' from='jbot@server_name' xml
:lang='en'>
08:50:22 RECV (0): <?xml version='1.0'?><stream:stream xmlns='jabber:client' xml
ns:stream='http://etherx.jabber.org/streams' id='3533088839' from='server_name' version='1.0' xml:lang='en'><stream:features><starttls xmlns='urn:ietf:params:xml
:ns:xmpp-tls'/><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>P
LAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>SCRAM-SHA-1</mechani
sm></mechanisms><register xmlns='http://jabber.org/features/iq-register'/></stre
am:features>
XMPP Connected
08:50:22 SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='SCR
AM-SHA-1'>biwsbj1qYm90LHI9U1d4bzZqXDt2dFlZdHhlajp7WmUrMWtwZihCcTZWJGM=</auth>
08:50:22 RECV (0): <challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>cj1TV3hvN
mpcO3Z0WVl0eGVqOntaZSsxa3BmKEJxNlYkY2NaMVVuSjVwejBCZWtPZzREbGxxNWc9PSxzPWw3VnBOS
kk1MGMzZVBLdUl2U2FnY0E9PSxpPTQwOTY=</challenge>
08:50:22 SENT (0): <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>Yz1iaXdzLH
I9U1d4bzZqXDt2dFlZdHhlajp7WmUrMWtwZihCcTZWJGNjWjFVbko1cHowQmVrT2c0RGxscTVnPT0scD
1TUWNNTGJORHB6NnFUVi84K2s3M09McFRRSTg9</response>
08:50:22 RECV (0): <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><bad-auth/>
</failure>
ш■ы 19, 2018 8:50:22 AM org.jivesoftware.smack.sasl.SASLError fromString
WARNING: Could not transform string 'bad_auth' to SASLError
java.lang.IllegalArgumentException: No enum constant org.jivesoftware.smack.sasl
.SASLError.bad_auth
        at java.lang.Enum.valueOf(Enum.java:238)
        at org.jivesoftware.smack.sasl.SASLError.valueOf(SASLError.java:27)
        at org.jivesoftware.smack.sasl.SASLError.fromString(SASLError.java:51)
        at org.jivesoftware.smack.sasl.packet.SaslStreamElements$SASLFailure.<in
it>(SaslStreamElements.java:209)
        at org.jivesoftware.smack.util.PacketParserUtils.parseSASLFailure(Packet
ParserUtils.java:797)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePacket
s(XMPPTCPConnection.java:1099)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(
XMPPTCPConnection.java:1000)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPT
CPConnection.java:1016)
        at java.lang.Thread.run(Thread.java:748)

Exception in thread "main" org.jivesoftware.smack.sasl.SASLErrorException: SASLE
rror using SCRAM-SHA-1: bad-auth
        at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAu
thentication.java:292)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePacket
s(XMPPTCPConnection.java:1100)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(
XMPPTCPConnection.java:1000)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPT
CPConnection.java:1016)
        at java.lang.Thread.run(Thread.java:748)


Когда я беру например клиент Wime то он подключается также к jabber.ru без проблем, но когда я им подключаюсь к своему локальному серверу , то выходит warning о self-signed certificate с вопросом принять отклонить его. Возможно, что проблема падающего моего клиента как раз в этом ? или нет? Я понимаю что проблема скорее всего пустяковая, но у меня пока плохо с пониманием процессов )))

P.S. в сети нашел кусок кода , который как я понял заставляет попросту игнорировать что там с сертификатом у сервера. Хотя я не уверен в верности его. Это вставляется в мою программу (кусочками в соответствующие места):
import jabberIL.X509_Trust_Manager;
import javax.net.ssl.SSLContext;
import java.security.SecureRandom;
import javax.net.ssl.TrustManager;

SSLContext Cur_SSL_Context = null;
		try	{
			Cur_SSL_Context = SSLContext.getInstance("TLS");
			Cur_SSL_Context.init(null, new TrustManager[] { new X509_Trust_Manager() }, new SecureRandom());
		} catch (Exception e) {
			e.printStackTrace();
		}

                .setSocketFactory(Cur_SSL_Context.getSocketFactory())


И сам имплементированный класс X509_Trust_Manager
package jabberIL;

import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
import java.security.cert.CertificateException; 

public class X509_Trust_Manager implements X509TrustManager {
    
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {		
	}
    
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {		
	}
    
    public X509Certificate[] getAcceptedIssuers()  {
        return null;
    }
}


Но в этом случае моя программа крашится с ошибкой таймаута:
Exception in thread "main" org.jivesoftware.smack.SmackException$NoResponseExcep tion: No response received within reply timeout. Timeout was 5000ms (~5s). While waiting for establishing TLS
  • Вопрос задан
  • 427 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы