2016-12-14 32 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示例。