リクエストの認証 - Amazon Simple Queue Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リクエストの認証

署名認証とは、リクエストの送信者を特定し、検証するプロセスです。認証の最初の段階では、AWSはプロデューサーのIDと、プロデューサーがを使用するように登録されているかどうかを確認しますAWS (詳細については、「」を参照ステップ 1: AWS アカウント と IAM ユーザーの作成)。その後、AWS が次の手順に従います。

  1. プロデューサー (送信者) が必要な証明書を取得します。

  2. プロデューサーがリクエストと認証情報をコンシューマー (受信者) に送信します。

  3. コンシューマーは証明書を使用して、プロデューサーが本当にリクエストを送信したか検証します。

  4. 次のいずれかの結果になります。

    • 認証が成功すると、コンシューマーはリクエストを処理します。

    • 認証に失敗すると、コンシューマーによってリクエストが却下され、エラーが返されます。

HMAC-SHA による基本的な認証のプロセス

クエリAPIを使用してAmazon SQSにアクセスする場合は、リクエストの認証のために、以下の項目を準備する必要があります。

  • AWSを識別する アクセスキー IDをが AWS アカウントシークレットアクセスキーをAWS検索するために使用します。

  • HMAC-SHAリクエスト署名、シークレットアクセスキーを使用して計算されます(共有シークレットはお客様とAWS だけが知っています。詳細については、RFC2104 を参照してください)。AWSSDK によって署名プロセスが処理されますが、HTTP または HTTPS 経由でクエリリクエストを送信した場合、各クエリリクエストに署名を含める必要があります。

    1. 署名バージョン4の署名キーを取得します。詳細については、「Java を使用して署名キーを取得」を参照してください。

      注記

      Amazon SQSは署名バージョン4をサポートしています。署名バージョン4では、SHA256により以前のバージョンよりもセキュリティとパフォーマンスが向上しています。Amazon SQSを使用する新規のアプリケーションを作成する場合、署名バージョン4を使用します。

    2. リクエスト署名をBase64 エンコードします。以下のサンプルJavaコードによってこの処理が行われます。

      package amazon.webservices.common; // Define common routines for encoding data in AWS requests. public class Encoding { /* Perform base64 encoding of input bytes. * rawData is the array of bytes to be encoded. * return is the base64-encoded string representation of rawData. */ public static String EncodeBase64(byte[] rawData) { return Base64.encodeBytes(rawData); } }
  • リクエストのタイムスタンプ (または有効期限)。リクエストで使用するタイムスタンプは、dateTime オブジェクトでなければなりません。時、分、秒を含む詳細な日時が必要です。たとえば、2007-01-31T23:59:59Z などです。必須ではありませんが、協定世界時 (グリニッジ標準時)を使用してオブジェクトを提供することが推奨されています。

    注記

    あなたのサーバー時刻が正しく設定されていることを確認してください。(有効期限ではなく) タイムスタンプを指定する場合、リクエストは、指定された時間の15分後に自動的に有効期限切れとなります (タイムスタンプが、AWS サーバー上の現在時刻よりも15分以上前の場合、AWS はリクエストの処理を行ないません)。

    .NET を使用する場合、過度に厳密なタイムスタンプ情報を送信しないようご注意ください (タイムスタンプの処理プロセスの違いにより不具合が発生する可能性があるためです)。この場合、精度が 1ミリ秒以内のdateTimeオブジェクトを手動で作成してください。

パート 1: ユーザーからのリクエスト

以下は、HMAC-SHA リクエスト認証を使用して AWS リクエストを認証する場合に従う必要があるプロセスです。

  1. AWSにリクエストします。

  2. シークレットアクセスキーを使用して、キー付きハッシュメッセージ認証コード (HMAC-SHA) 署名を計算します。

  3. リクエストに、前のステップで生成した署名とアクセスキー ID を含め、AWSにリクエストを送信します。

パート 2:AWSからのレスポンス

AWSは、レスポンスで次のプロセスを開始します。

  1. AWSがアクセスキー ID を使用して、ユーザーのシークレットアクセスキーを調べます。

  2. AWSは、ユーザーがリクエストで送信した署名を生成するのに使用したのと同じアルゴリズムを使用して、リクエストデータとシークレットアクセスキーから署名を生成します。

  3. 次のいずれかの結果になります。

    • AWS が生成した署名がユーザーがリクエストに含めたものと一致した場合、AWS はリクエストを正規のものと認識します。

    • 署名が一致しなかった場合、リクエストの処理は拒否され、AWS はエラーを返します。