最近,根据以下两个网站上的说明,我能够在Swift IOS中为XMPP流提供MD5身份验证(我使用Apple的CommonCrypto C库的CC-MD5功能进行实际散列):
http://wiki.xmpp.org/web/SASLandDIGEST-MD5
http://www.deusty.com/2007/09/example-please.html
我正在寻找关于如何使其他散列SASL认证方案工作的类似解释,特别是SCRAM-SHA1.我找到了官方的RFC5802文档,但我在理解它时遇到了很多麻烦(它也不是特定于XMPP).我将非常感谢一个简单的解释或一些特定于XMPP身份验证的简单可读代码(C,PHP,C++,Javascript,Java),它们不会将库用于除实际散列之外的任何其他内容.
我有兴趣了解这个过程,而不是想使用ios XMPP-Framework.任何帮助,将不胜感激.
我已经从fons分叉了cl-mongo(常见的lisp MongoDB库)存储库,因为它已经不再需要维护,也不支持SCRAM-SHA-1登录过程.这是我的分支:https://github.com/mprelude/cl-mongo - 主要的变化是添加了对cl-scram的依赖(我的SCRAM实现),并添加了一个bson二进制通用容器.
我仍在尝试发送初始消息,因此问题不在于密码错误,因为尚未使用.
为什么这部分身份验证失败了?如果我希望将MESSAGE中的内容传送给mongo,是否有人可以确认BINARY-MESSAGE是否应该发送给我?
这是我的调用,增加了一些调试输出:
* (asdf:load-system :cl-mongo)
T
* (cl-mongo:db.use "test")
"test"
* (cl-mongo:db.auth "aurumrw" "pencil" :mechanism :SCRAM-SHA-1)
(kv-container : #(#S(CL-MONGO::PAIR :KEY saslStart :VALUE 1)
#S(CL-MONGO::PAIR :KEY mechanism :VALUE SCRAM-SHA-1)
#S(CL-MONGO::PAIR
:KEY payload
:VALUE [CL-MONGO::BSON-BINARY-GENERIC] [binary data of type 0] ))
((CL-MONGO::BINARY-MESSAGE
. #(98 105 119 115 98 106 49 104 100 88 74 49 98 88 74 51 76 72 73 57 83 87
116 122 101 84 100 78 101 …Run Code Online (Sandbox Code Playgroud)