2011-03-06 1 views
6

저수준 파이썬으로 코딩하여 XMPP 사양 (RFC 3920)을 배우려고합니다. 그러나 섹션 6.5의 4 단계에서 인증 메커니즘을 선택하는 데 한 시간 이상 걸렸습니다. 나는 발신자 : <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'/>이며, base64로 인코딩 된 챌린지 대신 <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><incorrect-encoding/></failure>이 표시됩니다.XMPP 클라이언트는 어떻게 인증 메커니즘을 선택합니까?

내가 잘못 base64 인코딩 할 때 "잘못된 인코딩"오류가 사용되었지만 인코딩 할 텍스트가 없었습니다. 나는 아마 정말로 명백한 것을 놓치고있을 것이다. 아무도 절름발이가있어?

중요한 경우 talk.google.com 포트 5222를 서버로 사용하고 있습니다. 나는 그것이하는 것을 의심한다. 이것은 RFC의이 절을 이해하지 못해 거의 확실합니다. 그리고 문제는이 특정 연을 보내는 방식이 아닌 다른 방법으로 코드를 작성하는 것이 아니라 이전 단계에서 실패하는 것입니다. 그러나 가치가있는 무엇을 위해, 나는 지금까지 가지고있는 code이고, complete log (세션의 성적표)입니다. 감사.

답변

8

첫째로, RFC 3920bis은 종종 3920보다 명확합니다. 곧 RFC로 발표되어야합니다. 당신이 SASL PLAIN을 사용하고 있기 때문에

, 많은 서버는 구성되는 auth 요소에서 SASL "초기 응답"을 보낼 것으로 예상 (RFC 4616 참조), 다음, 모두 함께

base64(\x00 + utf8(saslprep(username)) + \x00 + utf8(saslprep(password))) 

당신의 auth 요소는 다음과 같이해야합니다 : 사용자 이름 "줄리엣"암호 "r0m30myr0m30"를

<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' 
      mechanism='PLAIN'>AGp1bGlldAByMG0zMG15cjBtMzA=</auth> 

.

+0

수신 : <성공 xmlns = "urn : ietf : params : xml : ns : xmpp-sasl"/> 감사합니다. 명확한 답변과 리소스 링크가 필요합니다. –