名称変更にともない、Product Advertising API にリクエストを送信いただく都度、認証のための電子署名を含めていただくことが必要になります。この変更は、2009年5月11日より3ヶ月の間の移行期 間の後、2009年8月15日には、Product Advertising API へ送信されるリクエストは全て認証されることとなり、認証されない場合、リクエストは処理されなくなります。
Amazon アソシエイト・プログラム(アフィリエイト) 公式ブログ: Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ
だそうです.まぁ,使ってないので関係ないですけど.REST的にはHMAC-SHAですよね.そんな理由で,WAISの発表の署名部分はHMAC-SHA256を採用していたんですけど,座長に「非対称オススメ」って言われちゃったので,うん・・・.英語力がないから言い返せない辺り,弱い.研究的な話でいけば,確かにPKI上でやるんだろうし,RSA-SHA256とかでいいかもしれない.いいかもしれなくないのは,URL長の問題だけど,これはRFC2616的には規定がない.RFCに規定がないからって制限がないわけでもないわけで,理論上は大丈夫とか,モダンブラウザでは大丈夫とか,そんな次元.個人的には携帯のブラウザでも大丈夫なように,HMAC-SHA256くらいの長さが関の山だと思うのです.RSA-SHA256は長すぎです.REST的に気分イクナイ!楕円曲線上の離散対数問題が云々だから,160bitって言えばいいのかな?簡単に実装できなさそうだから言いたくないけど.
と,今書いている論文の愚痴をこぼしても〆切が延びるわけでも,時間が増えるわけでも,執筆速度が上がるわけでも,なんでもないので,さっさと大人しく書けと,オレはオレに言いたい.
さて,タイトルと内容が不一致になっているので,HMAC-SHA256を実装する時の話をチラッと書いて,お茶を濁しておく.PHPでHMAC-SHA256する話.非常に簡単だから,良かったね.
- algo
- 選択したアルゴリズムの名前 (すなわち "md5"、"sha256"、"haval160,4" など…)。
さて,眠いので寝ると見せかけて,3章を仕上げる.
関連:
[を] アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい
200905102316追記:
PHPでこれら云々を簡単にやるPEARがあるようだ.Services_Amazonっていうらしい.便利な世の中です.なお,Perlの場合はdankogai氏作成のURI::Amazon::APAが使えるっぽい.良い世の中だ.なお,Rubyの場合はここが参考になるかと.
200905110122追記:
各言語用のまとめがありました.PHP,Perl,Ruby,Pythonがあります.Javaとか,JavaScriptとかはないですね.てか,みんなは一体なんの言語で書いているんだろう?オレなら,PHPかPerlですね.Rubyもいいなぁ・・・.
200905111052追記:
むしゃくしゃしてサンプルを書いてみた@PHP.
<?php
$key = '1234567890';
$req = array(
'AWSAccessKeyId=00000000000000000000',
'ItemId=0679722769',
'Operation=ItemLookup',
'ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews',
'Service=AWSECommerceService',
'Timestamp=2009-01-01T12%3A00%3A00Z',
'Version=2009-01-06');
$req = join('&', $req);
$message = array('GET', 'webservices.amazon.com', '/onca/xml', $req);
$message = join("\n", $message);
$hash = hash_hmac('sha256', $message, $key, 'true');
echo base64_encode($hash);
?>