Использование Ruby для аутентификации в Azure (аутентификация HTTP-заголовка)?

Поскольку API поиска Google устарел, я хотел бы использовать API поиска Bing (теперь API Windows Azure) в своих приложениях Ruby.

Однако в Azure используется странный шаблон проверки подлинности, при котором вы создаете URI запроса, вставляете его в браузер, передаете ключ в поле пароля стандартного поля проверки подлинности HTTP и выполняете POST, чтобы увидеть результаты. Я предполагаю, что это генерирует подпись и каким-то образом передает ее в заголовок. Я хотел бы выполнить весь процесс в Ruby и, если возможно, пропустить часть браузера.

Я нашел один пример в источнике ссылки непонятная жемчужина хранилища Windows Azure, но я не могу понять, как они создают подпись и совершают вызов. Есть ли простой способ выполнить базовую HTTP-аутентификацию в Ruby?


person thoughtpunch    schedule 22.05.2012    source источник


Ответы (4)


Я пошел дальше и использовал встроенную базовую схему аутентификации Фарадея, например:

connection = Faraday.new "http://api.something.com/1/dudez"
connection.basic_auth "username" "password"
connection.get
person thoughtpunch    schedule 24.05.2012
comment
basic_auth говорит, что ожидает один аргумент вместо двух. Синтаксис изменился? - person cboettig; 11.04.2013
comment
если вам нужно добавить какие-либо пользовательские заголовки, убедитесь, что вы добавили basic_auth ПОСЛЕ того, как заголовки были установлены, потому что они будут сброшены методом заголовков. - person fregas; 14.09.2013

Я хочу порекомендовать для этого гем RestClient. Я использовал его с большим успехом для GET и POST для разных доменов. Если вам действительно нужно действовать как браузер для реализации API, вы всегда можете использовать Capybara.

Извините, я сам не пробовал Azure API, а то бы привел пример. :)

person ringe    schedule 22.05.2012

Я помню, как делал это ранее с другим API Azure, но не могу найти код.

Подробнее о процессе подписи смотрите здесь:

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

Я не могу сразу определить, использует ли API Azure метод SharedSignature.

person lusis    schedule 22.05.2012

Способ подписания запроса к хранилищу BLOB-объектов Windows Azure через REST API описан здесь: http://msdn.microsoft.com/en-us/library/dd179428.aspx.

По сути, вы не выполняете аутентификацию, просто добавляя некоторые учетные данные в заголовок HTTP, вы должны подписать свой запрос с помощью секретного ключа, связанного с вашей учетной записью хранения.

person benjguin    schedule 16.10.2012