Mashery允许通过数字签名认证如下:
首先,将以下组件连接起来: Timestamp
然后,
的MD5哈希。
文档指出unix时间戳只需要+/- 5分钟的准确性。详细信息:http://support.mashery.com/docs/read/mashery_api/20/Authentication。
假设这不是一个商业秘密,这样执行身份验证的算法是什么?
具体来说,当unix时间戳可以改变5分钟时,怎么可能呢?一种“蛮力”技术可能是为每个可能的时间戳值计算一个签名,直到找到匹配(或不匹配)为止,但对于验证频繁的API调用来说,这似乎不太实际。
发布于 2011-11-10 03:15:02
是的,它似乎就是这样做的。您给出的文档链接声明:“允许在Mashery服务器当前时间戳的任何一侧进行5分钟的摆动,以允许合理的时钟漂移。”这意味着他们需要检查多达600散列,以确定提交的散列是否有效。5分钟是300秒。正负等于600张支票。
在我看来很实用。600 MD5s并不是很多处理要做的事情。事实上,现代密码验证器(就像使用bcrypt的东西)将执行更多的工作来验证密码。
发布于 2011-11-15 10:43:10
Amazon给出了一个很好的请求签名示例,并且非常详细地说明了这一机制(我意识到这不是mashery --但我认为这是您的目标,或者至少会帮助您实现API安全快乐)
http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html
发布于 2016-04-28 19:07:59
Mashery还可以根据需要预先生成有效签名列表或缓存每个sig。该签名对于Mashery为该API密钥/共享秘密所保护的所有API都是全局的,因此不需要对每个请求唯一地验证API调用。
https://stackoverflow.com/questions/8042907
复制相似问题