使用Ruby对Azure进行身份验证(HTTP标头身份验证)?

时间:2012-05-22 11:46:05

标签: ruby http-headers http-authentication

由于Google Search API已被弃用,我想在我的Ruby应用中使用Bing Search API(现在是Windows Azure API)。

但是,Azure有一种奇怪的身份验证模式,您可以在其中构建查询URI,将其粘贴到浏览器中,将密钥传递到标准HTTP身份验证框的密码框中,然后进行POST以查看结果。我假设这会生成一个签名并以某种方式将其传递到标题中。我想在Ruby中完成整个过程并尽可能跳过浏览器部分。

我在obscure Windows Azure storage gem的来源中找到了一个例子,但我无法弄清楚他们是如何建立签名并进行通话的。有一种简单的方法可以在Ruby中进行基本的HTTP身份验证吗?

4 个答案:

答案 0 :(得分:2)

我继续使用法拉第内置的基本身份验证方案,如下所示:

connection = Faraday.new "http://api.something.com/1/dudez"
connection.basic_auth "username" "password"
connection.get

答案 1 :(得分:1)

我想为此推荐RestClient gem。我已经非常成功地使用它来跨领域进行GET和POST。如果您确实需要像浏览器一样实施API,则可以始终使用Capybara

对不起,我自己没有尝试过Azure API,或者我举一个例子。 :)

答案 2 :(得分:1)

我记得以前使用其他Azure API执行此操作但无法找到代码。

在此查看签名过程的详细信息:

http://msdn.microsoft.com/en-us/library/windowsazure/ee395415.aspx

如果Azure API使用SharedSignature方法

,我无法立即找到

答案 3 :(得分:0)

此处描述了通过REST API签署对Windows Azure blob存储的请求的方法:http://msdn.microsoft.com/en-us/library/dd179428.aspx

基本上,您不需要通过在HTTP标头中添加一些凭据进行身份验证,您必须使用与您的存储帐户关联的密钥对您的请求进行签名。