`
sony-soft
  • 浏览: 1104964 次
文章分类
社区版块
存档分类
最新评论

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”之类的关键字搜索,发现了一些类似问题的资料
8、开始没看懂,后来忽然意识到,登录openfire肯定要用“username@hostname/resource”,而在此之前,一定要保证和服务器建立socket连接。借这种思路,先在qxmpp源代码里硬编码建立socket连接时所用的host为linux机器的ip,而登录还是用“username@hostname/resource”,成功。

备注
1、这种改法是权宜之计,感觉真正的做法应该利用建立连接时获得的hostname组成JID。
分享到:
评论

相关推荐

    openfire二次开发问题分析及解决

    本文针对使用Openfire服务器进行二次开发时可能遇到的问题,结合实际需求,提出了一系列解决方案,并着重介绍了Openfire服务器插件开发和源码修改等方面的设计与实现。 #### 二、Openfire插件开发问题分析与解决 #...

    使用openfire登录android

    标题“使用openfire登录android”涉及的技术点主要是集成Openfire服务器和MySQL数据库,以及在Android平台上实现登录功能。Openfire是一款开源的即时通讯(Instant Messaging, IM)服务器,它基于XMPP(Extensible ...

    基于openfire服务器的的IM系统源程序

    在这个系统中,客户端通过QXMPP库与Openfire服务器建立连接,进行登录、发送/接收消息等操作。服务器端处理这些请求,并负责用户管理和消息路由。 6. **源程序**:提供的源程序意味着你可以查看和修改代码,这对于...

    Openfire安装配置手册

    Openfire安装配置手册 Openfire是一个基于XMPP协议的即时通讯服务器,提供了强大的聊天功能和插件架构。本手册将指导您搭建开发环境,安装和配置Openfire服务器。 一、 搭建开发环境 要搭建开发环境,需要安装...

    openfire的相关资源

    在本文中,我们将深入探讨Openfire的相关资源,包括如何搭建、源码配置、编译运行以及解决常见问题。 一、Openfire的搭建 Openfire的搭建过程相对简单,但需要一些基本的Java环境和服务器管理知识。首先,你需要...

    Openfire strophejs 跨域访问

    解决Openfire和Strophe.js的跨域问题,主要是为了克服浏览器的同源策略。同源策略是浏览器为了安全而设定的一种机制,它阻止了一个源(协议+域名+端口)的文档或脚本获取或操作另一个源的资源。在Openfire与Strophe....

    openfire_4_0_1

    - 当遇到问题时,首先检查服务器日志,通常错误信息会提供解决线索。 - 在Openfire社区论坛寻求帮助,那里有丰富的资源和热心的用户。 总之,Openfire在Windows环境下提供了强大的即时通讯解决方案。通过合理的...

    linux下openfire安装配置

    过程中可能遇到的问题包括权限问题、网络问题或配置错误,都需要根据具体情况进行调试。提供的两个文档——"CentOS平台Openfire搭建过程.doc"和"openfire安装配置文档.docx"应该会提供更详细的操作指南和解决方案,...

    openfire深入浅出

    书中会提供一些常见问题的解决方案,教你如何诊断和解决OpenFire运行中遇到的问题。同时,你将学习到如何调整服务器参数以提高性能,包括内存分配、线程池设置、数据库查询优化等。 总的来说,《OpenFire深入浅出》...

    agsxmpp与openfire服务器通讯

    三、agsxmpp.dll修复登录问题 1. **网络问题**:检查网络连接是否正常,确保agsxmpp能够连接到Openfire服务器。 2. **认证错误**:核对用户名和密码,确保它们与Openfire服务器上的设置一致。如果使用了特殊的字符...

    Openfire在使用MySQL数据库后的中文乱码问题解决.docx

    在使用 MySQL 作为数据存储时,Openfire 用户经常遇到一个常见的问题,那就是中文字符显示为乱码。这个问题主要体现在以下几个方面: 1. 当用户通过 Openfire 客户端或后台管理系统创建包含中文属性的新账户时,...

    基于qxmpp协议最简单的聊天客户端

    openfire服务器+qxmpp协议 实现的一个最简单的即时通讯聊天程序客户端,填写对方jid即可发送消息给对方!

    基于openfire 仿QQ

    【基于Openfire 仿QQ】项目是一个实现类似QQ即时通讯功能的应用,利用开源的Openfire服务器作为后台支撑。Openfire是一款用Java编写的轻量级XMPP(Extensible Messaging and Presence Protocol)服务器,广泛用于...

    Jwchat+openfire部署

    - 在Openfire服务器上创建Jwchat所需的用户和群组,这些信息将在Jwchat中用于登录和组织架构。 - 配置Jwchat的认证方式为Openfire,使两者能进行身份验证同步。 - 测试Jwchat与Openfire的连接,确保用户可以成功...

    openfire mac系统安装文件

    openfire mac系统安装文件 Openfire (formerly Wildfire) is a cross-platform real-time collaboration server based on the XMPP (Jabber) protocol.

    openfire环境搭建说明

    当控制台输出相关信息时,则表示Openfire服务已经成功启动。 #### 四、参考资料 - [GitHub上的Openfire发布页面](https://github.com/igniterealtime/Openfire/releases) - [Openfire官方文档]...

    openfire安装---及时聊天

    ### Openfire 安装指南 —— 即时聊天...如果是纯数字密码,则可能导致无法登录的问题。 以上步骤提供了 Openfire 即时通讯系统的详细安装流程及注意事项,按照这些步骤操作,即可顺利完成 Openfire 的安装配置工作。

    [经典]Openfire整合现有用户

    整合Openfire时,需要确保SPARK客户端能识别和连接到Openfire服务器,并能使用已整合的用户账户登录。 7. **安全性和隐私**:在整合过程中,必须注意保护用户隐私,确保传输的数据加密,并遵循相关的数据保护法规。...

    openfire部署学习资料

    2. Web管理控制台:通过在浏览器中输入服务器地址加端口(默认9090)访问Openfire管理界面,登录后可进行用户管理、群组管理、服务器设置等操作。 3. 邮件通知设置:为了接收服务器错误报告和系统通知,可以配置SMTP...

    openfire简介.pdf

    - **事件监听器**:用于监听Openfire中的特定事件,如用户登录、消息发送等。 - **数据包拦截器**:可以在数据包发送或接收时对其进行修改或拦截。 - **服务**:提供自定义的XMPP服务,如自定义的命令行接口或新的...

Global site tag (gtag.js) - Google Analytics