Amazon Product Advertising API について
お世話になります。
署名認証追加に伴い、プログラムを変更したのですが、
現在、以前の認証方法と署名認証の両方が平行稼動されているためか、
本当に署名認証が成功しているのか確認することができません。
ちなみにMicrosoft SOAP Tool Kitを使用しSOAPリクエストの中身を以下と
比較したとこと(1)~(9)の内容は全て満たしていました。
https://affiliate.amazon.co.jp/gp/associates/help/t126/a17?ie=UTF8&pf%5Frd%5Ft=501&ref%5F=amb%5Flink%5F84048036%5F15&pf%5Frd%5Fm=AN1VRQENFRJN5&pf%5Frd%5Fp=&pf%5Frd%5Fs=center-2&pf%5Frd%5Fr=&pf%5Frd%5Fi=assoc%5Fhelp%5Ft126%5Fa16
本当に成功しているのか確証が得られないため、
確認しようと試みた内容は以下です。
【その1】
アカウントをA・B2つ作成し、1つ(A)に証明書をアップロードする。
Aの証明書をWEBサーバの証明書ストアにインストールし、
プログラム中のAccessKeyをA、B変更し、結果が返ってくるか確認する。
<結果予想>
A:成功 B:失敗(WEBサーバ上の証明書はアカウントBの証明書ではないため)
<結果>
A:成功 B:成功
Bにはそもそも証明書がアップロードされていないので、
証明書ではなくAccessKeyによる認証をされているのか???
【その2】
アカウントAの証明書を新しく作り直し、amazonにアップする。
<結果予想>
WEBサーバの証明書ストアに登録してあるものと、amazonに登録してあるものと
内容は異なるので、失敗するはず。
<結果>
成功
平行運用期間中は電子認証に失敗したら現行のAccessKeyだけの
認証を行っているのかなとも思ったのですが、本当は失敗するのであれば
プログラムが間違っていることになるのでしょうか??
色々調べてここまでやっとたどり着いたのですが、情報が少なく、行き詰ってしまいました。
どなたかよい知恵がございましたら教えてください。
ちなみに開発環境と実装したプラグラムの内容は以下です。
【開発環境】
・ASP.Net(C#) .NET Framework 1.1
・Microsoft.Web.Services(WSE1.0を使用してデジタル署名を行う)
【プログラム】
//■ItemSearchRequestオブジェクト作成-----------------------------------
com.amazon.webservices.ItemSearchRequest searchRequest = new com.amazon.webservices.ItemSearchRequest();
//検索キーワードの指定
searchRequest.Keywords = Search.Text;
//検索するストアのインデックスを指定(書籍)
searchRequest.SearchIndex = "Books";
//返されるデータの種類を指定
searchRequest.ResponseGroup = new string [] {"ItemAttributes"};
//ページを指定
searchRequest.ItemPage = Page.Text;
//並び順(売上順)
searchRequest.Sort="salesrank";
//■ItemSearchオブジェクト作成--------------------------------------------------------
com.amazon.webservices.ItemSearch search = new com.amazon.webservices.ItemSearch();
//AWSAccessKeyId
search.AWSAccessKeyId = "MyAccessKey";
//ItemSearchRequestオブジェクトの配列を指定
search.Request = new com.amazon.webservices.ItemSearchRequest[] { searchRequest };
//■電子証明書----------------------------------------------------------------
com.amazon.webservices.AWSECommerceService ecs4 = new com.amazon.webservices.AWSECommerceService();
SoapContext ctx = ecs4.RequestSoapContext;
X509CertificateStore store = X509CertificateStore.LocalMachineStore(X509CertificateStore.MyStore);
if (!store.OpenRead())
return;
X509CertificateCollection certs = store.FindCertificateBySubjectName("C=US, O=Amazon.com, OU=AWS-Developers, CN=XXXXXXXX");
X509SecurityToken x509 = new X509SecurityToken(((X509Certificate)certs[0]));
ctx.Security.Tokens.Add(x509);
store.Close();
Signature sign = new Signature(x509);
ctx.Security.Elements.Add(sign);
//■Webサービスの呼び出し----------------------------------------------------------------
com.amazon.webservices.ItemSearchResponse searchResponse = ecs4.ItemSearch(search);
お礼
以前に黒色のロゴを何処かで見かけたことがあると記載してた通り 見つかりました。 くだらない質問をしてしまいましたが、自信ありの回答という事なので 解決した報告という事に