2016-12-14 98 views
-1

XMPP libstrophe客户端连接我libstrophe例如客户端程序bot.c,并试图与ejabberd服务器连接。与ejabberd

我面临认证失败。请参阅下面的日志。

xmpp DEBUG Connecting via altdomain. 
xmpp DEBUG sock_connect() to 127.0.0.1:5222 returned 3 
xmpp DEBUG Attempting to connect to 127.0.0.1 
xmpp DEBUG connection successful 
conn DEBUG SENT: <?xml version="1.0"?><stream:stream to="prakash.com" xml:lang="en" version="1.0" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams"> 
xmpp DEBUG RECV: <stream:stream id="16900185530209358531" version="1.0" lang="en" from="prakash.com"> 
xmpp DEBUG RECV: <features xmlns="http://etherx.jabber.org/streams"><c hash="sha-1" xmlns="http://jabber.org/protocol/caps" node="http://www.process-one.net/en/ejabberd/" ver="LSc28EBBWo2uA2P3nRDU+sBlbsc="/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>X-OAUTH2</mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms></features> 
conn DEBUG SENT: <auth mechanism="SCRAM-SHA-1" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">biwsbj1CVlAscj0zZjMwOTQ5N2IyYTEwZDYzNjUwZTRiNzEwMmY3Zjk1</auth> 
xmpp DEBUG RECV: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure> 
xmpp DEBUG handle SCRAM-SHA-1 (challenge) called for failure 
xmpp DEBUG SASL SCRAM-SHA-1 auth failed 
conn DEBUG SENT: <auth mechanism="DIGEST-MD5" xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/> 
xmpp DEBUG RECV: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">bm9uY2U9IjcwOTEwMTI1NzE1NzkzNzMyOTkiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge> 
xmpp DEBUG handle digest-md5 (challenge) called for challenge 
conn DEBUG SENT: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9IkJWUCIscmVhbG09InByYWthc2guY29tIixub25jZT0iNzA5MTAxMjU3MTU3OTM3MzI5OSIsY25vbmNlPSJhMjZkZWQ0M2Y4MmMiLG5jPTAwMDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvcHJha2FzaC5jb20iLHJlc3BvbnNlPWEyYTVlMDIwYTNkZjc1NmY1NTAxZDBkYzMyMDliOGQ5LGNoYXJzZXQ9dXRmLTg=</response> 
xmpp DEBUG RECV: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure> 
xmpp DEBUG handle digest-md5 (rspauth) called for failure 
xmpp DEBUG SASL DIGEST-MD5 auth failed 
conn DEBUG SENT: <auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">AEJWUABhZG1pbjEyMw==</auth> 
xmpp DEBUG RECV: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure> 
xmpp DEBUG SASL PLAIN auth failed 
auth ERROR Cannot authenticate without resource 
conn DEBUG SENT: </stream:stream> 
xmpp DEBUG RECV: </stream:stream> 
xmpp DEBUG Closing socket. 
DEBUG: disconnected 
event DEBUG Stopping event loop. 
event DEBUG Event loop completed. 

有人可以帮助我解决这个认证问题吗?

+0

请看[格式帮助](http://stackoverflow.com/editing-help) - 编辑你的问题,选择所有这些错误消息,按下Ctrl-K,它会缩进4个空格你所以他们会被格式化为代码。在错误消息和开头段落之间添加一个空白行,如果该行不能正常工作。它会显示您在编辑文本框下的实时预览。欢迎来到堆栈溢出:) –

+0

您的错误是“身份验证错误无法验证没有资源”。设置此资源(即客户端程序的任意名称,如“Skype”,“AndroidPhone”,“DesktopPC”,“Spark”)并重试。然而,下次再添加一些代码... – MrPk

回答

0

Libstrophe逐个尝试支持的认证机制,直到一个成功或全部失败。问题出在服务器端,并且给定的日志没有提供足够的信息来显示它。

SCRAM-SHA-1机制在第一节后失败。这意味着服务器仅在发送用户名时拒绝认证。我会建议检查这样的用户是否存在(我不确定是否区分大小写)。如果这无助于查看ejabberd日志。


要考虑到PLAIN机构发送base64编码登录/密码和任何人都可以对其进行解码。因此,我建议从libstrophe的日志中删除编码的密码是这样的:

conn DEBUG SENT: <auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">*REDACTED*</auth> 

当所有的认证机制失效libstrophe试图旧版客户端身份验证。在这种情况下,它需要一个资源来构建<iq>节。日志显示一个错误信息,因为资源未添加到jid

auth ERROR Cannot authenticate without resource 

当用户登录/密码是否正确,没有与Jabber服务器没有问题的认证应该一号支持的机制和传统认证不应该”成功不要叫。因此,忽略最后的错误信息是安全的。

+0

重新启动并添加新用户后,它开始工作@Dmitry Podgorny。 –

+0

感谢你的评论@德米特里·波德戈尼 –

0

在ejabbered.yml文件中编辑以下参数。

auth_password_format:急停

s2s_protocol_options: - “no_sslv3”

保存文件。

停止并启动ejabbered Server。

现在将用户注册到服务器端,并在libstrophe库中运行bot示例。