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



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

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

我在一个晦涩难懂的Windows Azure存储gem的源代码中找到了一个示例,但我无法弄清楚他们如何构建签名并进行调用。有没有一种简单的方法可以在Ruby中进行基本的HTTP身份验证?

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

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

我想为此推荐RestClient gem。我已经在跨域的 GET'ing 和 POST'ing 中取得了巨大的成功。如果你真的必须像浏览器一样实现API,你总是可以使用Capybara。

很抱歉,我没有自己尝试过Azure API,否则我会举个例子。 :)

我记得以前使用另一个 Azure API 执行此操作,但找不到代码。

有关签名过程的详细信息,请在此处查看:

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

我无法立即找到 Azure API 是否使用共享签名方法

通过 REST API 对 Windows Azure blob 存储的请求进行签名的方法如下所述:http://msdn.microsoft.com/en-us/library/dd179428.aspx。

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

最新更新