Amazon Web Services
Allgemeine Referenz (Version 1.0)

Signaturversion 4-Testsuite

Um Ihnen bei der Entwicklung eines AWS-Clients zu helfen, der Signaturversion 4 unterstützt, können Sie die Dateien in der Testsuite verwenden. So können Sie sicherstellen, dass Ihr Code jeden Schritt im Signaturprozess korrekt ausführt.

Laden Sie aws-sig-v4-test-suite.zip herunter, um die Test-Suite zu erhalten.

Jede Testgruppe umfasst fünf Dateien, mit deren Hilfe Sie die einzelnen im Abschnitt Signaturprozess mit Signaturversion 4 beschriebenen Aufgaben validieren können. In der folgenden Liste sind die Inhalte der einzelnen Dateien beschrieben.

  • file-name.req – die zu signierende Webanforderung.

  • file-name.creq – die resultierende kanonische Anforderung.

  • file-name.sts – die zu signierende Zeichenfolge.

  • file-name.authz – der Authorization-Header.

  • file-name.sreq – die signierte Anforderung.

Umfang der Anmeldeinformationen und geheimer Schlüssel

Die Beispiele in der Testsuite verwenden den folgenden Umfang an Anmeldeinformationen:

AKIDEXAMPLE/20150830/us-east-1/service/aws4_request

Beispiel für den für die Signierung verwendeten geheimen Schlüssel:

wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY

Beispiel – eine einfache GET-Anforderung mit Parametern

Das folgende Beispiel zeigt die zu signierende Webanforderungen der Datei get-vanilla-query-order-key-case.req. Dies ist die ursprüngliche Anforderung.

GET /?Param2=value2&Param1=value1 HTTP/1.1 Host:example.amazonaws.com X-Amz-Date:20150830T123600Z

Aufgabe 1: Erstellen einer kanonischen Anforderung

Ändern Sie in den Schritten unter Aufgabe 1: Erstellen einer kanonischen Anforderung für Signature Version 4 die Anforderung in der Datei get-vanilla-query-order-key-case.req.

GET /?Param2=value2&Param1=value1 HTTP/1.1 Host:example.amazonaws.com X-Amz-Date:20150830T123600Z

Dadurch wird die kanonische Anforderung in der Datei get-vanilla-query-order-key-case.creq erstellt.

GET / Param1=value1&Param2=value2 host:example.amazonaws.com x-amz-date:20150830T123600Z host;x-amz-date e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Hinweise

  • Die Parameter werden alphabetisch (nach Zeichencode) sortiert.

  • Die Headernamen bestehen aus Kleinbuchstaben.

  • Es gibt einen Zeilenumbruch zwischen dem x-amz-date-Header und den signierten Headern.

  • Der Hash der Nutzlast der Hash der leeren Zeichenfolge.

Aufgabe 2: Erstellen einer zu signierenden Zeichenfolge

Der Hash der kanonischen Anforderung gibt den folgenden Wert zurück:

816cd5b414d056048ba4f7c5386d6e0533120fb1fcfa93762cf0fc39e2cf19e0

Fügen Sie in den Schritten unter Aufgabe 2: Erstellen einer zu signierenden Zeichenfolge für Signature Version 4 Algorithmus, Anforderungsdatum, Umfang der Anmeldeinformationen und kanonischen Anforderungs-Hash hinzu, um die zu signierende Zeichenfolge zu erstellen.

Das Ergebnis ist die Datei get-vanilla-query-order-key-case.sts.

AWS4-HMAC-SHA256 20150830T123600Z 20150830/us-east-1/service/aws4_request 816cd5b414d056048ba4f7c5386d6e0533120fb1fcfa93762cf0fc39e2cf19e0

Hinweise

  • Das Datum in der zweiten Zeile stimmt mit dem x-amz-date-Header überein, ebenso wie das erste Element im Umfang der Anmeldeinformationen.

  • Die letzte Zeile ist der in Hexadezimalzeichen kodierte Wert für den Hash der kanonischen Anforderung.

Aufgabe 3: Berechnen der Signatur

Erstellen Sie in den Schritten unter Aufgabe 3: Berechnen der Signatur für AWS Signature Version 4 eine Signatur mit Ihrem Signaturschlüssel und der zu signierenden Zeichenfolge der Datei get-vanilla-query-order-key-case.sts file.

Aus dem Ergebnis wird der Inhalt der Datei get-vanilla-query-order-key-case.authz generiert.

AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=b97d918cfa904a5beff61c982a1b6f458b799221646efd99d3219ec94cdf2500

Aufgabe 4: Hinzufügen der Signierinformationen zur Anforderung

Fügen Sie in den Schritten unter Aufgabe 4: Hinzufügen der Signatur zur HTTP-Anforderung die in Aufgabe 3 generierten Signierinformationen zur ursprünglichen Anforderung hinzu. Fügen Sie beispielsweise den Inhalt der Datei get-vanilla-query-order-key-case.authz zum Authorization-Header hinzu und fügen Sie das Ergebnis dann der Datei get-vanilla-query-order-key-case.req hinzu.

Dadurch wird die signierte Anforderung in der Datei get-vanilla-query-order-key-case.sreq erstellt.

GET /?Param2=value2&Param1=value1 HTTP/1.1 Host:example.amazonaws.com X-Amz-Date:20150830T123600Z Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=b97d918cfa904a5beff61c982a1b6f458b799221646efd99d3219ec94cdf2500