我试图使用我使用XMPP4R编写的一个简单客户端对Tigase服务器进行身份验证。我使用简单的身份验证以最简单的方式进行连接。使用像Psi这样的现成客户端,我可以很好地连接,但是XMPP4R库总是发送错误的流。根据这链接,Base64编码的字符串应该由\00<username>\00<password>组成,例如\00hank\00Secr3tP4ssw-rd ( Psi也是这样做的)。然而,xmpp4r库所做的类似于Tigase并不喜欢的\00hank@hanks-server.xx\00hank\00Secr3tP4ssw-rd。为什么会出现第三个/第一个参数?如何通过简单身份验证规避发送完整域的问题?
发布于 2014-09-01 14:03:15
看看代码,显然没有办法绕过这件事。
第一个参数是“授权标识”,而不是作为第二个参数提供的“身份验证标识”。“身份验证标识”是您想要作为身份验证的用户(即您正在发送密码的用户),而“授权标识”是您希望充当的用户,例如,如果管理员需要访问用户的帐户。这很少使用,因此“授权标识”通常是空的。
RFC 6120指定表示:
如果发起实体不愿代表另一实体行事,则不得提供授权身份。
因此,这应该被认为是XMPP4R中的一个bug。
https://stackoverflow.com/questions/25606864
复制相似问题