認証(Timestamp及びSignature)

広告

Product Advertising APIへ名称が変更になったのに伴い2009年8月15日以降はリクエストにTimestampプロパティ及びSignatureプロパティを含める必要があります。

Timestampプロパティはリクエストを送信するたびに時刻を取得して含める必要があり、SignatureプロパティはTimestampプロパティを含めたリクエストを使って作成するためSignatureプロパティもリクエストを送信するたびに作成されることになります。よって今までのように一度作成したリクエストをいつでも同じように送信することはできず、リクエストを送るときに動的に作成しなければならなくなりました。

プログラミング言語毎に認証を行うためのサンプルコードが提供されていますので、ご自分の環境に合わせて認証の仕組みを組み込むようにして下さい。テスト用に手動でリクエストに対してTimestampプロパティ及びSignatureプロパティを追加するには「Signed Requests Helper」を参照して下さい。またJavaScriptを使って認証を行うサンプルは「JavaScriptを使った署名認証」に記載しました。

認証の手順

ここでは簡単にリクエストにTimestampプロパティ及びSignatureプロパティを含める手順を確認しておきます。

(1)対象となるリクエストを用意します。(下記は実際は1行です)。

http://ecs.amazonaws.jp/onca/xml?
Service=AWSECommerceService
&AWSAccessKeyId=00000000000
&Operation=ItemSearch
&Version=2009-07-01
&ResponseGroup=Request%2CImages

(2)Timestampプロパティの値としてGMTでの時刻を追加します。フォーマットは2009-01-01T12:00:00Zです。(下記は実際は1行です)。

http://ecs.amazonaws.jp/onca/xml?
Service=AWSECommerceService
&AWSAccessKeyId=00000000000
&Operation=ItemSearch
&Version=2009-07-01
&ResponseGroup=Request%2CImages
&Timestamp=2009-07-22T13:41:39Z

(3)URLエンコードします。(下記は実際は1行です)。

http://ecs.amazonaws.jp/onca/xml?
Service=AWSECommerceService
&AWSAccessKeyId=00000000000
&Operation=ItemSearch
&Version=2009-07-01
&ResponseGroup=Request,Images
&Timestamp=2009-07-22T13%3A41%3A39Z

(4)リクエストからパラメータの部分だけを取り出し、&を削除してパラメータ名と値のペアに分割します。

Service=AWSECommerceService
AWSAccessKeyId=00000000000
Operation=ItemSearch
Version=2009-07-01
ResponseGroup=Request,Images
Timestamp=2009-07-22T13%3A41%3A39Z

(5)並び替えを行います。大文字(A)は小文字(a)よりも前です。

AWSAccessKeyId=1SM7CKHWKSJKJFPKBA02
Operation=ItemSearch
ResponseGroup=Request%2CImages
Service=AWSECommerceService
Timestamp=2009-07-22T13%3A41%3A39Z
Version=2009-07-01

(6)パラメータと値のペアを再度&を使ってつなげて1つの行にします。(下記は実際は1行です)。

AWSAccessKeyId=1SM7CKHWKSJKJFPKBA02
&Operation=ItemSearch
&ResponseGroup=Request%2CImages
&Service=AWSECommerceService
&Timestamp=2009-07-22T13%3A41%3A39Z
&Version=2009-07-01

(7)先頭に次の文字列を追加します。(4行目以降は実際は1行です)。

GET
ecs.amazonaws.jp
/onca/xml
AWSAccessKeyId=1SM7CKHWKSJKJFPKBA02
&Operation=ItemSearch
&ResponseGroup=Request%2CImages
&Service=AWSECommerceService
&Timestamp=2009-07-22T13%3A41%3A39Z
&Version=2009-07-01

(8)作成した文字列をHMAC with the SHA256ハッシュアルゴリズムを使って計算し署名を作成します。この時Secret Keyを使用します。

Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=

(9)作成した署名をURLエンコードします。

Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D

(10)作成した書名をSignatureパラメータの値として(6)で作成したパラメータの最後に追加します。このパラメータを使ってリクエストを作成します。(下記は実際は1行です)。

http://ecs.amazonaws.jp/onca/xml?
AWSAccessKeyId=1SM7CKHWKSJKJFPKBA02
&Operation=ItemSearch
&ResponseGroup=Request%2CImages
&Service=AWSECommerceService
&Timestamp=2009-07-22T13%3A41%3A39Z
&Version=2009-07-01
&Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D

以上がリクエストを作成する手順となります。手順のいくつかの部分で何らかのプログラムを必要とします。

( Written by Tatsuo Ikura )