2016-12-14 2 views
-1

Я libstrophe пример клиентская программа bot.c и пытается соединиться с ejabberd сервера.XMPP libstrophe соединение клиента с 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 пробела для так что они будут отформатированы как код. Добавьте пустую строку между сообщениями об ошибках и вашим первым абзацем, если это не работает сразу. Он показывает вам предварительный просмотр в текстовом поле редактирования. Добро пожаловать в Stack Overflow :) –

+0

Ваша ошибка: «auth ERROR Не удается аутентифицировать без ресурса». установите этот ресурс (это произвольное имя для клиентской программы, например «Skype», «AndroidPhone», «DesktopPC», «Spark») и повторите попытку. Однако в следующий раз добавьте еще и код ... – MrPk

ответ

0

Libstrophe пытается использовать механизмы аутентификации один за другим, пока не будет успешным, или все не удастся. Проблема на стороне сервера, и данные журналы не предоставляют достаточной информации для ее раскрытия.

SCRAM-SHA-1 механизм не работает после 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 сервер аутентификации должен сменять на 1-ом поддерживается механизм и наследие аутентификации не должен» t будем называть. Поэтому безопасно игнорировать последнее сообщение об ошибке.

+0

После перезагрузки и добавления нового пользователя он начал работать @Dmitry Podgorny. –

+0

Спасибо за комментарии ур @ Дмитрий Подгорный –

0

Редактировать приведенные ниже параметры в файле ejabbered.yml.

auth_password_format: катись

s2s_protocol_options: - "NO_SSLv3"

сохранить файл.

Остановите и запустите сервер ejabbered.

Теперь зарегистрируйте пользователя на стороне сервера и запустите пример бота в библиотеке libstrophe.

Смежные вопросы