I am trying to port my application from aSmack to Smack 4.1.1 . However, I had problems using the same server and login information in the Smack case, when it works perfectly on aSmack.
Here is my old aSmack login code -
void startConnect(boolean sslFlag) throws XMPPException, SmackException, IOException { ConnectionConfiguration connectionConfig = new ConnectionConfiguration(HOST, Integer.parseInt(PORT), SERVICE); connectionConfig.setDebuggerEnabled(true); connectionConfig.setCompressionEnabled(false); if (sslFlag) SASLAuthentication.supportSASLMechanism("PLAIN", 0); XMPPConnection connection = new XMPPTCPConnection(connectionConfig); connection.connect(); connection.login(mUserName, mUserPassword, getResource());
I am also trying to use the code in a similar way in Smack -
public void init() { SmackConfiguration.DEBUG = true; XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setHost(SERVICE_NAME) .setPort(5222) .setServiceName(SERVICE_NAME) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setDebuggerEnabled(true) .build(); mConnection = new XMPPTCPConnection(config); //I have tried with blacklisting and unblacklisting all three mechanism. //SASLMechanism mechanism = new SASLPlainMechanism(); //This didn't help //SASLAuthentication.registerSASLMechanism(mechanism); SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1"); SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5"); SASLAuthentication.unBlacklistSASLMechanism("PLAIN"); try { mConnection.connect(); return; } catch (SmackException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XMPPException e) { e.printStackTrace(); } mConnection = null; } public void login(String username, String password) throws IOException, XMPPException, SmackException { if(mConnection==null || !mConnection.isConnected()){ init(); if(mConnection==null){ throw new IOException(); } } mConnection.login(username/*+"@"+SERVICE_NAME*/, password); //I have tried both the method by adding @Domain part and without it. mChatManager = ChatManager.getInstanceFor(mConnection); mChatManager.addChatListener(this); }
Here's the exception I get -
05-21 21:22:29.782 19536-23179/test W/System.err﹕ org.jivesoftware.smack.sasl.SASLErrorException: SASLError using PLAIN: not-authorized 05-21 21:22:29.782 19536-23179/test W/System.err﹕ at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:365) 05-21 21:22:29.792 19536-23179/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1033) 05-21 21:22:29.792 19536-23179/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$200(XMPPTCPConnection.java:937) 05-21 21:22:29.792 19536-23179/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:952) 05-21 21:22:29.792 19536-23179/test W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
This exception is the same as SCRAM and DIGEST-MD5. He just changes the name.
This is what I get from the server -
05-21 21:22:29.512 19536-23189/test D/SMACK﹕ SENT (0): <stream:stream xmlns='jabber:client' to='xmpp.example.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'> 05-21 21:22:29.642 19536-23190/test D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='214326363' from='xmpp.example.com' version='1.0' xml:lang='en'><stream:features><compression xmlns='http://jabber.org/features/compress'><method>zlib</method></compression><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>SCRAM-SHA-1</mechanism><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='hX7OB6oTZugjNIFHZvd95k5UYzc='/><register xmlns='http://jabber.org/features/iq-register'/></stream:features> 05-21 21:22:29.652 19536-23189/test D/SMACK﹕ SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>ADEwMDAAMTAwMA==</auth> 05-21 21:22:29.782 19536-23190/test D/SMACK﹕ RECV (0): <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><not-authorized/></failure>
What could be the problem? I tried with all three mechanisms PLAIN , DIGEST-MD5 and default SCRAM-SHA-1 . I also tried with or without adding a domain name on it. I tried it with adding a username and password in the settings and by adding it directly to the login method.
I also tried in security mode, which gives the following error:
05-21 21:27:53.658 25643-26009/test D/SMACK﹕ SENT (0): <stream:stream xmlns='jabber:client' to='xmpp.example.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'> 05-21 21:27:53.788 25643-26010/test D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='4179863647' from='xmpp.example.com' version='1.0' xml:lang='en'><stream:features><compression xmlns='http://jabber.org/features/compress'><method>zlib</method></compression><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>SCRAM-SHA-1</mechanism><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='hX7OB6oTZugjNIFHZvd95k5UYzc='/><register xmlns='http://jabber.org/features/iq-register'/></stream:features> 05-21 21:27:54.229 25643-26009/test D/SMACK﹕ SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>ADEwMDAAMTAwMA==</auth> 05-21 21:27:59.264 25643-25970/test W/System.err﹕ org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: No filter used or filter was 'null'. 05-21 21:27:59.454 25643-26010/test W/AbstractXMPPConnection﹕ Connection closed with error org.jivesoftware.smack.SmackException$SecurityRequiredByClientException: SSL/TLS required by client but not supported by server at org.jivesoftware.smack.tcp.XMPPTCPConnection.afterFeaturesReceived(XMPPTCPConnection.java:898) at org.jivesoftware.smack.AbstractXMPPConnection.parseFeatures(AbstractXMPPConnection.java:1367) at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$800(XMPPTCPConnection.java:139) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:998) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$200(XMPPTCPConnection.java:937) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:952) at java.lang.Thread.run(Thread.java:856) 05-21 21:27:59.494 25643-25970/test W/System.err﹕ at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:250) 05-21 21:27:59.494 25643-25970/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginNonAnonymously(XMPPTCPConnection.java:365) 05-21 21:27:59.524 25643-25970/test W/System.err﹕ at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:452) 05-21 21:27:59.544 25643-25970/test W/System.err﹕ at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:427) 05-21 21:27:59.574 25643-25970/test W/System.err﹕ at test.Managers.XMPPManager.login(XMPPManager.java:84) 05-21 21:27:59.594 25643-25970/test W/System.err﹕ at test.API.LoginAPI.callAPI(LoginAPI.java:31) 05-21 21:27:59.604 25643-25970/test W/System.err﹕ at test.API.BaseAPI$XMPPTask.doInBackground(BaseAPI.java:70) 05-21 21:27:59.624 25643-25647/test D/dalvikvm﹕ GC_CONCURRENT freed 1558K, 17% free 30564K/36743K, paused 13ms+32ms, total 111ms 05-21 21:27:59.624 25643-25970/test W/System.err﹕ at test.API.BaseAPI$XMPPTask.doInBackground(BaseAPI.java:45) 05-21 21:27:59.624 25643-25970/test W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:287) 05-21 21:27:59.624 25643-25970/test W/System.err﹕ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 05-21 21:27:59.664 25643-25970/test W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:137) 05-21 21:27:59.664 25643-25970/test W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 05-21 21:27:59.664 25643-25970/test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 05-21 21:27:59.664 25643-25970/test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 05-21 21:27:59.664 25643-25970/test W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
PS:
I need a solution in Smack 4.1.1. My code already works well in aSmack, I need to update it in Smack. I think it’s clear now.