2012-03-26 1 views
2

Это моя первая попытка написать приложение Rails для использования внешнего веб-сервиса.Предоставление учетных данных веб-сервису через ActiveResource

Я провел некоторое базовое экспериментирование, извлекая некоторые записи из другого приложения rails через ActiveResource, который работал довольно хорошо, но в этом случае я пытаюсь получить доступ к стороннему веб-сервису, который требует очень конкретной проверки подлинности, прежде чем я смогу что-либо сделать.

Служба в вопросе является REST API предоставляется DNSMadeEasy документация, для которой может быть расположен в http://www.dnsmadeeasy.com/services/rest-api/

Требования аутентификации в соответствии с документацией являются следующие:

  • Создать строковое представление текущую дату и время в формате HTTP. Пример: Сб, 12 фев. 2011 20:59:04 GMT
  • Рассчитать шестнадцатеричный хэш HMAC SHA1 этой строки, используя секретный ключ в качестве хеш-ключа.
  • Задайте значения заголовков запросов с помощью ключа API, текущей даты и времени и вычисленного вами HMAC-хэша.

Так что я понял, как получить дату и вычислить хэш:

request_date = Time.now.httpdate HMAC = OpenSSL :: HMAC.hexdigest ('sha1', secret_key, request_date)

Так что мой вопрос состоит из трех частей:

во-первых, как я потом идти о вставке этой информации в заголовке HTTP, когда я посылаю от моего запроса к веб-сервиса?

Во-вторых, как я могу поместить все это в суперкласс, который наследует классы ActiveResource, так что мне не нужно беспокоиться об этом в классах для Domain и ResourceRecord?

В-третьих, существует ли наилучшая практика для хранения API и секретных ключей в вашем приложении, то есть если это нужно сделать с помощью инициализатора или лучше использовать переменную окружения?

Любые советы и рекомендации для такого рода рабочих процессов будут чрезвычайно оценены.

Благодаря

ответ

3

1 - Вы можете установить заголовки, установив переменную экземпляра называется @headers так:

class Base < ActiveResource::Base 
@headers = { ‘key’ => ‘value’ } 
end 

Посмотрите на источник Active Resource: Headers

2 - Сделать все ваши ресурсы наследуют от той базы, которую вы только что создали, а затем наследуют ее от ActiveResource :: Base.

3 - я обычно ставлю эти ключи в средах файлов или я использую этот драгоценный камень SettingsLogic

+0

удивительный, спасибо за это, дам ему попробовать. –

+0

, если вы думаете, что я ответил на ваш вопрос, вы можете отметить его как принятый :) – Nobita

 Смежные вопросы

  • Нет связанных вопросов^_^