2012-03-26 5 views
2

이것은 외부 웹 서비스를 사용하기 위해 Rails 앱을 작성한 첫 시도입니다.ActiveResource를 통해 웹 서비스에 자격 증명 제공

나는 꽤 잘 작동하는 ActiveResource를 통해 다른 레일즈 응용 프로그램에서 일부 레코드를 가져 오는 몇 가지 기본적인 실험을 해봤지만,이 인스턴스에서는 매우 구체적인 인증을 요구하는이 웹 사이트에 액세스하려고합니다.

  • 는의 문자열 표현을 만들고 다음과 같이

    문제의 서비스는있는 http://www.dnsmadeeasy.com/services/rest-api/

    에 위치한 인증 요구 사항 문서에 따라 할 수있는 문서 DNSMadeEasy에서 제공하는 REST API입니다 HTTP 형식의 현재 날짜와 시간. 예 : 토요일, 12 2 월 2011 20:59:04 GMT

  • 비밀 키를 해시 키로 사용하여 해당 문자열의 16 진수 HMAC SHA1 해시를 계산합니다.
  • API 키, 현재 날짜와 시간 및 계산 한 HMAC 해시를 사용하여 요청 헤더의 값을 설정하십시오.

    REQUEST_DATE = Time.now.httpdate HMAC =에는 OpenSSL : HMAC.hexdigest ('SHA1', SECRET_KEY, REQUEST_DATE)

    :

그래서 나는 날짜를 얻고 해시를 계산하는 방법을 알아 냈어 나는 웹 서비스에 대한 내 요청을 보낼 때

첫째

, 어떻게 다음 HTTP 헤더에이 정보를 삽입 가야합니까 :

그래서 제 질문은 세 부분으로?

둘째, 내 ActiveResource 클래스가 상속하는 수퍼 클래스에이 모든 것을 넣으려면 어떻게해야합니까? 도메인 및 ResourceRecord 클래스에서 걱정할 필요가 없습니까?

셋째, 앱에 API 및 비밀 키를 저장하는 것이 가장 좋습니다. 즉, 초기화 프로그램을 사용하여 수행해야합니까? 아니면 환경 변수를 사용하는 것이 가장 좋습니까?

이러한 종류의 워크 플로우에 대한 모든 팁과 트릭은 극명하게 평가 될 것입니다.

감사

답변

3

1 - 당신은 전화 @headers이 같은 인스턴스 변수를 설정하여 헤더를 설정할 수 있습니다

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

Active Resource: Headers

2 소스를 살펴 보자 - 확인 모든 리소스는 ActiveResource :: Base에서 상속받는 대신에 방금 만든 Base를 상속받습니다.

3 - 나는 보통 환경 파일에 그 열쇠를 넣어 또는 내가 그것을 시도를 제공합니다 SettingsLogic

+0

굉장이 보석을, 그 감사를 사용합니다. –

+0

내가 귀하의 질문에 답변했다고 생각하시면 허용으로 표시 할 수 있습니다. :) – Nobita