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

Smack XMPP:无法登录openfire服务器:“SASLErrorException:使用摘要的SASLError-MD5:未授权”

鞠建安
2023-03-14

我正在尝试创建一个基本连接,并登录到我安装的Openfire服务器。我通过Openfire web管理界面创建的用户数据库中有以下用户:

User: user
Password: 12345678

我可以很好地连接到服务器,因为连接在我的sout中返回true。问题是,当它尝试登录时,会出现以下错误:

org.jivesoftware.smack.sasl.SASLErrorException: SASLError using DIGEST-MD5: not-authorized

我有以下代码:

private XMPPConnection connection;

public void connect(String serverIP) {
    try {

        System.setProperty("smack.debugEnabled", "true");
        ConnectionConfiguration config = new ConnectionConfiguration(serverIP, 5223);
        config.setDebuggerEnabled(true);
        config.setSocketFactory(new DummySSLSocketFactory());    
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
        config.setCompressionEnabled(true);
        connection = new XMPPTCPConnection(config);
        connection.connect();

        System.out.println("Connected: " + connection.isConnected());
        connection.login("user", "12345678");
        System.out.println("Logged in: " + connection.isAuthenticated());

    } catch (SmackException | IOException | XMPPException ex) {
        ex.printStackTrace();
    }
}

public static void main(String[] args) {
    connectionHandler test = new connectionHandler();
    test.connect("localhost");
}

如果有人能纠正我做错的事情,我会非常感激。

我也尝试了用户名作为电子邮件将是例如

user@localhost.com
or
user@localhost

共有2个答案

丁宏浚
2023-03-14

SASLError使用DIGEST-MD5:未授权

这很可能是因为您没有在连接配置中配置正确的XMPP域(/service name)。DIGEST-MD5不仅会在用户名或密码错误时失败,还会在使用错误的XMPP域时失败。

段超
2023-03-14

我终于找到了答案。问题(甚至可能不是问题)在于服务器配置中没有设置身份验证方法,默认情况下允许所有方法。java中的第一个选择似乎是DIGEST-MD5,这是导致错误的原因。为了解决这个问题,我补充道:

<sasl>
    <mechs> PLAIN </mechs>
</sasl>

在《明火》的最后一个收尾标签之前。在服务器的配置文件夹中找到xml。这也可以在名为sasl的列的属性数据库表中进行更改。机械装置

希望这对将来的某个人(可能是我)有所帮助。

注意:如果不使用SSL(默认为5223端口),这是不安全的

 类似资料:
  • 我得到以下错误,而登录成功连接后: 我在OpenFire服务器上打开用户,用户名8b6c219c36578e893c5e6d1d7b5af8a@myjob.uz。如果我使用asmack-2010.05.07所有工作正常,但当使用asmack-android-8-4.0.6我得到以下错误。\任何人知道如何修复它? 以下是连接方法:

  • 问题内容: 我正在尝试使用smack 4.1.0运行此代码 这给我一个错误: 并且,在本地openfire服务器中启用调试后,我收到以下消息: 我要去哪里错了? 问题答案: 根据与用户问题的讨论,AS位于XMPPTCPConnectionConfiguration中。默认情况下,Openfire中的端口5223是客户端SSL端口, 服务器>>服务器设置>>客户端连接 错误 org.jivesoft

  • 我正在尝试使用PHPMyAdmin登录MySQL服务器,但它不起作用, 我插入了true和,但它仍然不起作用,我不知道原因是什么 错误: mysql_real_connect():(HY000/1045):配置中定义的控制用户“root”@“localhost”(使用密码“是”)连接的访问被拒绝失败 无法进入PHPMyAdmin

  • 问题内容: 我通过Homebrew安装了MySQL和PhpMyAdmin。 当我尝试使用root及其密码登录时,出现以下错误: 我可以使用以下命令通过终端登录MySQL: PhpMyAdmin配置: 我正在 apache 上运行它。我在stackoverflow上尝试了所有解决方案,但它们似乎不起作用。谁能帮我? 问题答案: 您可以同时使用或作为主机声明。 您可以尝试使用它,它将起作用。

  • 问题内容: 我正在从http服务器下载文件,并且必须考虑到下载过程中的随机时间,网络连接失败或计算机崩溃。如果发生这种情况,我将使用HTTP“ Range:”标头开始恢复下载。 由于必须根据MD5哈希对下载进行验证,因此我似乎没有办法在简历后使用网络输入流来获取正确的哈希,因为java.security.MessageDigest似乎没有基本上说“从我以前下载的部分md5哈希开始更新当前的md5哈

  • 使用以下命令登录 ftp服务器: lftp ftp://用户名[:密码]@服务器地址[:端口] #标准方式,推荐 lftp 用户名[:密码]@服务器地址[:端口] lftp 服务器地址 [-p 端口] -u 用户名[,密码] lftp 服务器地址[:端口] -u 用户名[,密码] 如果不指定端口,默认 21 如果不在命令中使用明文输入密码,连接时会询问密码(推荐) 可以使用“书签”收藏服务器