2010-11-29 2 views
2

Amazon SimpleDB 서비스에 액세스하기위한 기본 클라이언트를 작성 중이며 요청 서명의 논리를 이해하는 데 문제가 있습니다. 서명 요청SimpleDB HMAC 서명

GET\n 
sdb.amazonaws.com\n 
/\n 
AWSAccessKeyId=<Your AWS Access Key ID> 
&Action=PutAttributes 
&Attribute.1.Name=Color 
&Attribute.1.Value=Blue 
&Attribute.2.Name=Size 
&Attribute.2.Value=Med 
&Attribute.3.Name=Price 
&Attribute.3.Value=0014.99 
&DomainName=MyDomain 
&ItemName=Item123 
&SignatureMethod=HmacSHA256 
&SignatureVersion=2 
&Timestamp=2010-01-25T15%3A01%3A28-07%3A00 
&Version=2009-04-15 

다음입니다 :

https://sdb.amazonaws.com/?Action=PutAttributes 
&DomainName=MyDomain 
&ItemName=Item123 
&Attribute.1.Name=Color&Attribute.1.Value=Blue 
&Attribute.2.Name=Size&Attribute.2.Value=Med 
&Attribute.3.Name=Price&Attribute.3.Value=0014.99 
&Version=2009-04-15 
&Timestamp=2010-01-25T15%3A01%3A28-07%3A00 
&SignatureVersion=2 
&SignatureMethod=HmacSHA256 
&AWSAccessKeyId=<Your AWS Access Key ID> 
Following is the string to sign. 

메시지는 서명 : 여기

는 예를 들어 요청입니다.

https://sdb.amazonaws.com/?Action=PutAttributes 
&DomainName=MyDomain 
&ItemName=Item123 
&Attribute.1.Name=Color&Attribute.1.Value=Blue 
&Attribute.2.Name=Size&Attribute.2.Value=Med 
&Attribute.3.Name=Price&Attribute.3.Value=0014.99 
&Version=2009-04-15 
&Timestamp=2010-01-25T15%3A01%3A28-07%3A00 
&Signature=<URLEncode(Base64Encode(Signature))> 
&SignatureVersion=2 
&SignatureMethod=HmacSHA256 
&AWSAccessKeyId=<Your AWS Access Key ID> 

나는 서명 할 메시지가 없습니다. 나는 그것을 얻지 않는 이유는 무엇입니까? 매개 변수 순서 은 요청과 서명 할 메시지 사이에서 모두 변경됩니다. 이 예에서 매개 변수가 사전 순으로 정렬 된 것 같습니다.

서명 할 메시지 뒤에 로직이 무엇인지, 즉 매개 변수 순서 등을 알려주려면 누구나 SimpleDB를 사용 해본 적이 있습니까? 설명서는 여기에서 매우 구체적이지 않습니다.

답변

1

는 문서에서 관련 부분의 견적입니다. 이 섹션은 SimpleDB 문서에서 사라졌지 만 SQS 문서에는 여전히 존재합니다. 여전히 SimpleDB에 직접 적용됩니다.

중요한 문제는 모든 HTTP 매개 변수 값을 올바르게 URL 인코딩해야한다는 것입니다.

  • 하지 예약되지 않은 문자 RFC 3986
    정의의 URL 인코딩 작업을 수행합니다.

  • 예약되지 않은 문자는 A-Z, a-z, 0-9, 하이픈 (-), 밑줄 (_), 마침표 (.) 및 물결표 (~)입니다.

  • % XY을 가진 다른 모든 문자를 퍼센트로 인코딩합니다. 여기서 X와 Y는 16 진수 0-9 및 대문자 A-F입니다.

  • 퍼센트 인코딩은 ZA

  • 퍼센트 인코딩 형식 %의 XY %로 %로 공백 문자 UTF-8 문자 확장 (공통 부호화 방식들처럼되지 +) 20.

일반적인 에러는 모두 데이터 값과 SelectExpressions에 나타날 수있는 별표 기호 (*)를 인코딩하는 고장을 포함한다.

+0

인기있는 온라인 URL 인코더는 별표 (*)를 인코딩하지 않습니다. 예 : meyerweb.com/eric/tools/dencoder 및 url-encode-decode.com을 참조하십시오. –