使用github.com/xmppo/go-xmpp包连接Ejabberd时出现SASL认证失败问题求助
github.com/xmppo/go-xmpp包连接Ejabberd时出现SASL认证失败问题求助
各位大佬好,我最近碰到个头疼的问题:用github.com/xmppo/go-xmpp包连接Ejabberd 23.1.0服务器时,一直出现认证失败的错误,具体提示是:auth failure: SASL negotiation is not allowed in this state
但奇怪的是,换成github.com/mattn/go-xmpp包就能正常完成连接和认证,完全没毛病。我实在搞不懂这两个包的差异在哪里,有没有大佬能帮忙分析下原因呀?
先说明下我的环境信息:
- Ejabberd版本:23.1.0
github.com/xmppo/go-xmpp版本:v0.2.0
下面是我捕获到的调试日志:
<?xml version='1.0'?><stream:stream to='example.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'> <?xml version='1.0'?><stream:stream id='18386229244849438105' version='1.0' xml:lang='en' xmlns:stream='http://etherx.jabber.org/streams' from='example.com' xmlns='jabber:client'> <stream:features><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism><mechanism>SCRAM-SHA-512-PLUS</mechanism><mechanism>SCRAM-SHA-512</mechanism><mechanism>SCRAM-SHA-256-PLUS</mechanism><mechanism>SCRAM-SHA-256</mechanism><mechanism>SCRAM-SHA-1-PLUS</mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='IqDFb67U3gXKxHlKjw7w7lV96wY='/></stream:features>
我注意到服务器返回的SASL机制是齐全的,包括常见的PLAIN、SCRAM系列和DIGEST-MD5,理论上包应该能支持这些才对。会不会是xmppo/go-xmpp包在XMPP连接流程的处理上出了问题?比如还没收到服务器的features就发起了SASL认证,或者流程顺序搞错了,导致服务器认为当前状态不允许协商SASL?
麻烦各位大佬帮忙指点下,感激不尽!
备注:内容来源于stack exchange,提问作者Anoop Kumar
相关产品推荐
相关产品推荐

