qxmpp登录openfire时的“Not Authorized”问题

问题

最近在一个linux机器上建了一个openfire,hostname为“A”,用spark的时候,在server处填写对方IP可以登录
但发现用qxmpp以“username@IP/resource”为JID登录时返回“Not Authorized”,但如果用“username@hostname/resource”为JID,则返回“socket error”
之前用“username@hostname/resource”为JID访问本地windows上架设的openfire没问题。


解决
1、对Java不熟,想请同事调一下spark是如何登录成功的,因为种种原因未成
2、短时间内没在openfire日志里找到spark登录时的JID
3、仔细分析qxmpp的底层代码,发现了socket连接和收发数据的地方,看到了最基本的xmpp通信xml
4、和同事讨论,同事建议修改本地host文件,将hostname映射成IP。当时没有接受这个建议,觉得不是最终解决办法,因为不可能去用户机器上修改host。(但事后看,这种做法是对调试有帮助的)
5、对比同一程序登录本地openfire和linux上的openfire过程中与服务器的xml。前面还能看懂,后面的就多是类似加密过的字符串,看了也没用。不过这个调研中最有价值的收获就是发现当和服务器建立socket连接后,服务器会返回hostname。
6、用wireshark分别收集spark登录linux上的openfire和自己程序登录同一服务器的数据包。同样,前面还能看,后面看不懂
7、无奈之下,用“Not Authorized openfire”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值