サードパーティプロバイダー署名ガイダンス
第三者決済サービスの署名を作成する方法をご覧ください。
正常に署名を生成するには、に記載されている手順に従ってください。 RFC 9421 スペシフィケーション。SP-API リクエストを行う TPP に対して Amazon が署名生成を強制する側面があることに注意してください。これらは以下のセクションに記載されています。
シグネチャーコンポーネント
RFC 9421 リクエストでどの HTTP メッセージコンポーネントが署名されているかを伝えるプロセスを説明します。署名を生成するときは、次のメッセージコンポーネントを含める必要があります。
注
次のコンポーネントを含めないと、署名の検証が失敗します。これらのコンポーネントは任意の順序で追加できます。
HTTP フィールド (メッセージヘッダー)
ヘッダー | 説明 |
---|---|
x-amz-access-token | リクエストに使用される LWA アクセストークン。 |
x-amzn-content-digest | リクエストペイロードの sha-256 ダイジェスト。ペイロードのないリクエストの場合は、で sha-256 ダイジェストを作成します。 空です ストリング。 |
追加情報については、を参照してください。 HTTP フィールド。
派生コンポーネント
Component | 説明 |
---|---|
@method | リクエストの HTTP メソッド。値は大文字でなければなりません (例: GET 、 POST )。 |
@query | によって定義される正規化されたクエリ文字列 URI そして先頭部分を含む ? キャラクター。リクエストにクエリがない場合は、コンポーネント値に以下を入力する必要があります。 ? で説明したシグネチャーベースを作成すると RFC 9421。この値は、Percentile-Encoding など、必要なエンコーディングをすべて実行した後に導出する必要があります。に対してさらに変更を加える場合 queryString 署名の作成時に含まれていないと、署名が失敗します。 |
追加情報については、を参照してください。 派生コンポーネント。
署名パラメーター
追加情報については、を参照してください。 署名パラメーター。
注意
すべてのリクエストヘッダー値は大文字と小文字が区別されます。大文字と小文字が一致しない場合、署名の検証は失敗します。
シグネチャーラベル
RFC 9421 では、同じヘッダ内に複数の署名を入れることができます (曖昧さをなくすために、 シグネチャーラベル)。SP-API が使用するシグネチャは 1 つだけで、そのシグネチャは以下によって識別されます。 x-amzn-psd2
シグネチャーラベル。次の場所で使用する必要があります。 Signature
そして Signature-Input
PSD2 関連情報を識別するヘッダー。
署名アルゴリズム
署名は、以下を完了したときに作成される署名ベース文字列に基づいて生成されます。 RFC 9421 のステップ。署名ベース文字列を生成したら、電子NCA証明書に関連付けられているプライベートキーを使用して、でリクエストに署名する必要があります。 512 アルゴリズム。SP-API リクエストで現在サポートされているのはこのアルゴリズムだけです。
署名に使用した秘密鍵に関連付けられている証明書は、ヘッダーとして渡す必要があります (x-amzn-psd2-certificate
) SP-API リクエストに含まれています。証明書は PEM フォーマット済み で始まる Base64 エンコーディングの文字列 -----BEGIN CERTIFICATE-----
で終わる -----END CERTIFICATE-----
。
証明書に使用できない文字を使用すると、SP-API リクエストは拒否されます。認定トラストサービスプロバイダー (QTSP) が発行した HTTP リクエストへの署名を目的とした証明書のみを使用する必要があります。
注意
使用する証明書は、開発者登録で提供した組織識別子に関連付けられている必要があります。一致しない場合、リクエストは拒否されます。
エラーレスポンス
リクエスト署名の検証に失敗すると、本文に追加情報を含む 403 エラーが表示されます。例えば:
{
"errors": [
{
"code": "Unauthorized",
"message": "Access to requested resource is denied.",
"details": "Reason for error."
}
]
}
次のリストは、に指定できる値の一覧です。 details
フィールド:
エラーメッセージ | 説明 |
---|---|
TPP certificate required but missing from request | ザの x-amzn-psd2-certificate ヘッダーがありません。 |
TPP certificate has invalid format | 提供された証明書は有効な PEM 形式ではありません。 |
Content Digest header required but missing from request | x-amzn-コンテンツダイジェストリクエストヘッダーが見つかりません。 |
Invalid Content Digest | コンテンツダイジェストを検証できなかったか、サポートされていないアルゴリズムを使用しました。SHA-256 のみがサポートされています。 |
Signature-Input header required but not presented | ザの Signature-Input リクエストヘッダーがありません。 |
Signature-Input header is invalid | ザの Signature-Input ヘッダー値は RFC 9421 仕様に準拠していません。 |
Request PSD2 Signature is Invalid | 署名が無効です。これには、間違った秘密鍵や証明書を使用したり、タイプミスしたりするなど、複数の原因が考えられます。 |
Signature header is required but not presented | ザの Signature リクエストヘッダーがありません。 |
署名の例
次の例は、すべての必須コンポーネントを含む署名ベース文字列です。
"x-amz-access-token": Atza|IgEBIN...
"x-amzn-content-digest": sha-256=:fadf3qr3TAFASEG3234gADA+krdzMzYayg4YFig=:
"@method": POST
"@query": ?key2=value2&key1=value1
"@signature-params": ("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512";
関連する Signature-Input
ヘッダーは:
Signature-Input: x-amzn-psd2=("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512"
次の例は、次のような署名ヘッダです。 Signature
ラベル:
Signature: x-amzn-psd2=:cyqStwls2k3Xs8SSzDvDhxWEc_P0dNxV5I6Tp... :
Updated 27 days ago