当前位置: 首页 > 知识库问答 >
问题:

Smack 4.1 SASL身份验证错误

姚晋
2023-03-14

我正在使用Smack4.1原生库为android开发一个聊天应用程序。我可以在应用程序和服务器之间设置连接,但在登录时,我得到了关于SASL身份验证的SmackException。

    null
    null
XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
        configBuilder.setUsernameAndPassword(userName, pass);
        configBuilder.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled);
        configBuilder.setResource("testServices");
        configBuilder.setServiceName(DOMAIN);
        configBuilder.setPort(PORT);
        configBuilder.setHost(DOMAIN);
        configBuilder.setDebuggerEnabled(true);

        AbstractXMPPConnection connection = new XMPPTCPConnection(
                configBuilder.build());

        /** Connecting to the server */
        try {
            connection.connect();
            Log.i(TAG, "Connected to " + connection.getHost());
        } catch (SmackException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XMPPException e) {
            Log.e(TAG, "Failed to connect to " + connection.getHost());
            Log.e(TAG, e.toString());
            e.printStackTrace();
        }

        /** LogingIn to the server */
        try {

            //SASLMechanism.PLAIN();
            //SASLAuthentication.("PLAIN", 0);

            connection.login(userName, pass);
            // connection.login();
        } catch (XMPPException e) {
            e.printStackTrace();
        } catch (SmackException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        /** LogingOut from the server */
        connection.disconnect();

这是我的logcat输出。

04-20 22:22:51.584: D/SMACK(8335): SENT (0): <stream:stream xmlns='jabber:client' to='my_server_url' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='10001@my_server_url' xml:lang='en'>
04-20 22:22:52.519: D/SMACK(8335): RECV (0): <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" version="1.0" id="0768491716592086" from="my_server_url">
04-20 22:22:53.744: D/SMACK(8335): RECV (0): <stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanisms></stream:features>
04-20 22:22:53.749: I/(8335): Connected to "smy_server_url"

04-21 12:24:55.815: I/(16566): SmackException to my_server_link.comorg.jivesoftware.smack.SmackException: SASL Authentication failed. No known authentication mechanisims.
04-20 22:22:53.754: W/System.err(8335): org.jivesoftware.smack.SmackException: SASL Authentication failed. No known authentication mechanisims.
04-20 22:22:53.759: W/System.err(8335):     at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:254)
04-20 22:22:53.759: W/System.err(8335):     at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginNonAnonymously(XMPPTCPConnection.java:365)
04-20 22:22:53.759: W/System.err(8335):     at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:452)
04-20 22:22:53.759: W/System.err(8335):     at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:427)
04-20 22:22:53.759: W/System.err(8335):     at com.epixoft.ui.LoginActivity$ConnectionTestTask.doInBackground(LoginActivity.java:120)
04-20 22:22:53.759: W/System.err(8335):     at com.epixoft.ui.LoginActivity$ConnectionTestTask.doInBackground(LoginActivity.java:1)
04-20 22:22:53.759: W/System.err(8335):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-20 22:22:53.759: W/System.err(8335):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-20 22:22:53.759: W/System.err(8335):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-20 22:22:53.764: W/System.err(8335):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-20 22:22:53.764: W/System.err(8335):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-20 22:22:53.764: W/System.err(8335):     at java.lang.Thread.run(Thread.java:841)
04-20 22:22:53.784: D/SMACK(8335): SENT (0): <presence id='PwoLk-3' type='unavailable'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='NfJ3flI83zSdUDzCEICtbypursw='/></presence>
04-20 22:22:53.789: D/SMACK(8335): SENT (0): </stream:stream>
04-20 22:22:53.864: E/ViewRootImpl(8335): sendUserActionEvent() mView == null

事先谢谢你的帮助。欢呼:)

共有1个答案

邹弘
2023-03-14

在苦苦挣扎之后,我终于找到了解决问题的办法。

我必须导入smack-sasl-provided-4.1.0.jar来消除此SASLAAuthentication错误。

 类似资料:
  • cluster=hfactory.getOrCreateCluster(“test cluster”,“localhost:9160”,凭据); 但不幸的是,它给了我一个错误: HFactory类型中的方法getOrCreateCluster(String,CassandraHostConfigurator,Map)不适用于参数(String,String,Map)

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 问题内容: 我刚刚开始使用docker。我正在按照此处指定的说明进行操作https://docs.docker.com/windows/step_one/ 我在Windows 10和ran上安装了docker(1.10.2)。但是,当本教程未提及任何内容时,出现了身份验证错误。 这是我收到的消息。 我在google&这里搜索,但找不到与此错误消息相似的内容。 谢谢! 问题答案: 当您运行任何其他d

  • 我想在CDH-5.3.2版本中使用水槽从twitter获取数据。我已经配置了flume.conf、hbase接收器和twitter源代码。 但是,当我启动代理时,我收到以下错误: flume.conf和hbase接收器代码与此博客相同:http://ahikmat.blogspot.com/2014/08/streaming-twitter-tweets-to-hbase-with.html 而且

  • 在controller文件夹中,我有一个名为fbauth.php的控制器,其中有以下代码 但当我点击facebook链接并尝试连接时,我得到了如下错误 另外,为了进行双重检查,我在Kohana之外创建了这个函数,它没有问题。 我所做的是,在Kohana的外部,我创建了一个名为index.php的文件,在其中我输入了html和Facebook身份验证的标记,然后我创建了一个名为testauth.ph

  • 问题内容: 我正在尝试在Node.js中使用Socket.IO,并试图允许服务器为每个Socket.IO客户端赋予一个身份。由于套接字代码不在http服务器代码的范围内,因此无法轻松访问已发送的请求信息,因此我假设在连接期间需要将其发送出去。什么是最好的方法 1)将有关谁通过Socket.IO连接到服务器的信息 2)验证他们说的是谁(如果正在使事情变得更容易,我目前正在使用Express) 问题答