【问题标题】:How can I debug Stanza.js Authentication?如何调试 Stanza.js 身份验证?
【发布时间】:2021-02-17 21:21:34
【问题描述】:

我目前正在尝试使用 Stanza.js 设置 XMPP 客户端 https://github.com/legastero/stanza

我有一个工作服务器,它接受来自 Gajim 客户端的连接,但是当尝试使用 Stanza.js client.connect 方法进行连接时,服务器打开了一个 websocket 连接,但没有用于身份验证的事件,或者会话启动时不会触发。

服务器日志不显示任何明文密码验证尝试。

我如何才能真正查看任何节日志来调试此问题?

import * as XMPP from 'stanza';

const config = { credentials: {jid: '[jid]', password: '[password]'}, transports: {websocket: '[socketurl]', bosh: false} };
const client = XMPP.createClient(config)
client.on('raw:*', (data) => {
    console.log('data', data)
})

client.connect();

onconnect 事件确实会触发,但这是唯一触发的事件。 有没有一种方法可以手动触发文档中未说明的身份验证?

【问题讨论】:

    标签: javascript xmpp ejabberd stanza.io


    【解决方案1】:

    原始事件处理程序应该能够为您提供所需的日志记录 - 但在您的代码示例中,您调用它不正确。请尝试以下操作。

    client.on('raw:*', (direction, data) => {
        console.log(direction, data)
    })
    

    作为参考,docs 状态是原始数据事件处理程序的回调

    (direction: incoming | outgoing, data: string) => void
    

    所以您要查找的数据在第二个参数中,但您的回调只有一个参数(只是方向字符串“传入”或“传出”,尽管您已将参数命名为“数据”)。

    一旦您修复了日志记录,我希望您会看到流立即终止并出现流错误。你的配置不正确。 jid 和密码应该是顶级字段。查看节示例代码。对于 createClient 的选项 - 没有凭据对象。请尝试以下操作:

    const config = { jid: '[jid]', password: '[password]', transports: {websocket: '[socketurl]', bosh: false} };
    

    由于您的用户名和密码隐藏在不正确的凭据对象后面,因此 stanza.io 看不到它们,您实际上是在尝试在没有用户名和密码的情况下进行连接,因此甚至没有尝试进行身份验证。

    【讨论】:

      【解决方案2】:

      这个问题恰好是由配置问题引起的。

      jabber 服务器正在使用普通身份验证。 在客户端定义文件中添加额外的行会有所帮助。 还添加 client.on('*', console.log) 提供更完整的服务器日志。

      client.sasl.disable('X-OAUTH2')
      

      【讨论】:

        【解决方案3】:

        我如何才能真正查看任何节日志来调试此问题?

        如果连接未加密,您可以使用类似的工具嗅探 XMPP 流量

        sudo tcpflow -i lo -Cg port 5222
        

        您可以强制 ejabberd 不允许加密,这样您的客户端就不会使用它,并且您可以读取网络流量。

        或者,您可以在 ejabbed.yml 中设置此项,但可能会生成大量日志消息:

        loglevel: debug
        

        【讨论】:

          猜你喜欢
          • 2019-05-06
          • 2021-01-14
          • 2015-02-06
          • 1970-01-01
          • 1970-01-01
          • 2019-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多