Amazon Web Services
Allgemeine Referenz (Version 1.0)

Aufgabe 4: Hinzufügen der Signierinformationen zur Anforderung

Nachdem Sie die Signatur berechnet haben, fügen Sie sie zur Anforderung hinzu. Zum Hinzufügen der Signierinformationen zu einer Anforderung stehen zwei Optionen zur Verfügung:

  • Ein HTTP-Header mit dem Namen Authorization

  • Die Abfragezeichenfolge

Sie können keine Signierinformationen sowohl im Authorization-Header als auch in der Abfragezeichenfolge übergeben.

Anmerkung

Sie können temporäre Sicherheitsanmeldeinformationen von der AWS Security Token Service (AWS STS) zum Signieren einer Anforderung verwenden. Das Vorgehen ist das gleiche, wie wenn dauerhaft gültige Anmeldeinformationen verwendet werden, es erfordert aber einen zusätzlichen HTTP-Header oder Abfragezeichenfolgenparameter für das Sicherheits-Token. Der Name des Headers oder Abfragezeichenfolgenparameters lautet X-Amz-Security-Token. Der Wert ist das Sitzungs-Token (die Zeichenfolge, die Sie von AWS STS mit den temporären Sicherheitsanmeldeinformationen erhalten haben).

Wenn Sie den Parameter X-Amz-Security-Token der Abfragezeichenfolge hinzufügen, erfordern einige Services, dass Sie diesen Parameter in die kanonische (signierte) Anforderung einfügen. Bei anderen Services fügen Sie den Parameter am Ende hinzu, nachdem Sie die Signatur berechnet haben. Weitere Informationen finden Sie in der API-Referenzdokumentation für diesen Service.

Hinzufügen von Signierinformation zum Authorization-Header

Sie können die Signierinformationen einbinden, indem Sie sie einem HTTP-Header namens Authorization hinzufügen. Der Inhalt des Headers wird erstellt, nachdem Sie die Signatur berechnet haben, wie in den vorangehenden Schritten beschrieben. Der Authorization-Header ist also nicht in der Liste signierter Header enthalten. Auch wenn der Header Authorization heißt, werden die Signierinformationen für die Authentifizierung verwendet.

Der folgende Pseudocode zeigt den Aufbau des Authorization-Headers.

Authorization: algorithm Credential=access key ID/credential scope, SignedHeaders=SignedHeaders, Signature=signature

Das folgende Beispiel zeigt einen fertigen Authorization-Header.

Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7

Beachten Sie Folgendes:

  • Es steht kein Komma zwischen Algorithmus und Credential. Die SignedHeaders und Signature werden jedoch jeweils von den vorherigen Werten durch ein Komma getrennt.

  • Der Credential-Wert beginnt mit der Zugriffsschlüssel-ID, gefolgt von einem Schrägstrich (/). Darauf folgt der Umfang der Anmeldeinformationen, die Sie in Aufgabe 2: Erstellen einer zu signierenden Zeichenfolge für Signature Version 4 berechnet haben. Der geheime Zugriffsschlüssel wird verwendet, um den Signaturschlüssel für die Signatur abzuleiten, ist aber nicht in den in der Anforderung übermittelten Signierinformationen enthalten.

Hinzufügen der Signierinformation zur Abfragezeichenfolge

Sie können Anforderungen erstellen und alle Anforderungswerte in der Abfragezeichenfolge übergeben, einschließlich der Signierinformationen. Dies wird auch als vorsignierte URL bezeichnet, da dadurch eine einzige URL erzeugt wird, die alles beinhaltet, was für einen erfolgreichen Aufruf an AWS erforderlich ist. Dies wird für gewöhnlich in Amazon S3 verwendet. Weitere Informationen finden Sie unter Authentifizieren von Anforderungen mithilfe von Abfrageparametern (AWS Signature Version 4) im Amazon Simple Storage Service API Reference.

Wichtig

Wenn Sie eine Anforderung absenden, in der alle Parameter in der Abfragezeichenfolge enthalten sind, stellt die daraus resultierende URL eine AWS-Aktion dar, die bereits authentifiziert wurde. Gehen Sie deshalb mit der resultierenden URL so achtsam um wie mit Ihren tatsächlichen Anmeldeinformationen. Wir empfehlen Ihnen, eine kurze Ablaufzeit für die Anforderung mit dem X-Amz-Expires-Parameter anzugeben.

Wenn Sie diese Methode verwenden, werden alle Abfragezeichenfolgenwerte (außer der Signatur) in die kanonische Abfragezeichenfolge aufgenommen, die Teil der kanonischen Anforderung ist, die Sie im im ersten Teil des Signaturprozesses erstellt haben.

Der folgende Pseudocode zeigt den Aufbau einer Abfragezeichenfolge, die alle Anforderungsparameter enthält.

querystring = Action=action querystring += &X-Amz-Algorithm=algorithm querystring += &X-Amz-Credential= urlencode(access_key_ID + '/' + credential_scope) querystring += &X-Amz-Date=date querystring += &X-Amz-Expires=timeout interval querystring += &X-Amz-SignedHeaders=signed_headers

Nachdem die Signatur berechnet wurde (wobei die anderen Abfragezeichenfolgenwerte als Teil der Berechnung verwendet werden), fügen Sie die Signatur zur Abfragezeichenfolge als X-Amz-Signature-Parameter hinzu:

querystring += &X-Amz-Signature=signature

Im folgenden Beispiel wird gezeigt, wie eine Anforderung aussehen könnte, wenn alle Anforderungsparameter und die Signierinformationen in den Abfragezeichenfolgenparametern enthalten sind.

https://iam.amazonaws.com?Action=ListUsers&Version=2010-05-08&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&X-Amz-Date=20150830T123600Z&X-Amz-Expires=60&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=37ac2f4fde00b0ac9bd9eadeb459b1bbee224158d66e7ae5fcadb70b2d181d02

Beachten Sie Folgendes:

  • Für die Berechnung der Signatur müssen die Parameter der Abfragezeichenfolge nach Zeichencodepunkt in aufsteigender Reihenfolge sortiert werden und ihre Werte müssen URI-kodiert sein. Lesen Sie den Schritt zum Erstellen einer kanonischen Abfragezeichenfolge unter Aufgabe 1: Erstellen einer kanonischen Anforderung für Signature Version 4.

  • Legen Sie für die Operation, die Sie anfordern, das Zeitüberschreitungsintervall (X-Amz-Expires) auf einen möglichst minimalen Zeitraum fest.