VBAでAmazon Pruduct Advertising API 署名認証 ― 2009-06-19 20:06
Amazon アソシエイト Web サービスが「Product Advertising API」という名前に変わりました。
今回は名前が変わっただけでなく、「リクエストに認証のための電子署名を含める」ことが必要に。
そのために必要な技術要素は:
・ISO8601形式でのGMTでのタイムスタンプ作成
・パラメーターのバイト順での並べ替え
・SHA-256ハッシュ値生成
・HMACでのメッセージ認証コード生成
・BASE64エンコード
・URLエンコード(パーセントエスケープ)
これらをひとつひとつ実装して組み合わせればいいわけですが、
Visual Basicだと、これがまあ、いちいち面倒くさい・・・。
PHPとかならたぶん何の苦労もないんでしょうけどね。
でもやるしかない。
最も面倒なのがSHA-256。
これは結局、Phil Fresle さんのクラスモジュールを流用させてもらいました。
コチラ↓
http://www.frez.co.uk/freecode.htm#sha256
(SHA-256 Digest - VB and VBScript (ASP) versions)
ただし、そのままでは7bit ASCII以外のデータを処理できないため、
ほんの少し改造する必要がありました。
(ここでかなりはまった・・・)
次はHMAC。
HMACとは:
http://www.ipa.go.jp/security/rfc/RFC2104JA.html
なんだか難しげに書いてありますが、手続きとしてはカンタンなことで、
要は、秘密鍵の文字列と定数とをXORをかけたのをメッセージに
くっつけつつ、ハッシュ(今回はSHA-256)を二重にかけてやるだけ。
あとは、BASE64やら、URLエンコードやら、ソーティングやら、
面倒くさいけれども単純なことだけです。
ビール的飲料をあおりながら一気に書き上げました。
あ、ソーティングとかはちょっと人のコードを拝借しましたが :-p
こうして、VBAで生成した電子署名付きリクエストが無事に
これまでどおり通るようになりましたとさ。
めでたしめでたし。
アマゾンの電子署名認証へのVisual Basicでの対応でお困りの方へ♪
Excel VBAのサンプルコードを有償でご提供します。
連絡可能なeメールアドレスを添えてコメント欄でご連絡ください。
(追記)
既存のVBAコードへのアマゾン署名認証対応作業も承ります♪
(追記 2009年08月23日)
提供サンプルコードはAccessでも使えます♪
今回は名前が変わっただけでなく、「リクエストに認証のための電子署名を含める」ことが必要に。
そのために必要な技術要素は:
・ISO8601形式でのGMTでのタイムスタンプ作成
・パラメーターのバイト順での並べ替え
・SHA-256ハッシュ値生成
・HMACでのメッセージ認証コード生成
・BASE64エンコード
・URLエンコード(パーセントエスケープ)
これらをひとつひとつ実装して組み合わせればいいわけですが、
Visual Basicだと、これがまあ、いちいち面倒くさい・・・。
PHPとかならたぶん何の苦労もないんでしょうけどね。
でもやるしかない。
最も面倒なのがSHA-256。
これは結局、Phil Fresle さんのクラスモジュールを流用させてもらいました。
コチラ↓
http://www.frez.co.uk/freecode.htm#sha256
(SHA-256 Digest - VB and VBScript (ASP) versions)
ただし、そのままでは7bit ASCII以外のデータを処理できないため、
ほんの少し改造する必要がありました。
(ここでかなりはまった・・・)
次はHMAC。
HMACとは:
http://www.ipa.go.jp/security/rfc/RFC2104JA.html
なんだか難しげに書いてありますが、手続きとしてはカンタンなことで、
要は、秘密鍵の文字列と定数とをXORをかけたのをメッセージに
くっつけつつ、ハッシュ(今回はSHA-256)を二重にかけてやるだけ。
あとは、BASE64やら、URLエンコードやら、ソーティングやら、
面倒くさいけれども単純なことだけです。
ビール的飲料をあおりながら一気に書き上げました。
あ、ソーティングとかはちょっと人のコードを拝借しましたが :-p
こうして、VBAで生成した電子署名付きリクエストが無事に
これまでどおり通るようになりましたとさ。
めでたしめでたし。
アマゾンの電子署名認証へのVisual Basicでの対応でお困りの方へ♪
Excel VBAのサンプルコードを有償でご提供します。
連絡可能なeメールアドレスを添えてコメント欄でご連絡ください。
(追記)
既存のVBAコードへのアマゾン署名認証対応作業も承ります♪
(追記 2009年08月23日)
提供サンプルコードはAccessでも使えます♪
最近のコメント