View a markdown version of this page

Authentifizieren von Anfragen: Verwenden des Autorisierungs-Headers (AWS Signatur (Version 4) - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizieren von Anfragen: Verwenden des Autorisierungs-Headers (AWS Signatur (Version 4)

-Übersicht

Die Verwendung des Authorization HTTP-Headers ist die gebräuchlichste Methode zur Bereitstellung von Authentifizierungsinformationen. Mit Ausnahme von POST-Anfragen und Anfragen, die mithilfe von Abfrageparametern signiert werden, verwenden alle Amazon S3-Operationen den Authorization Anforderungsheader, um Authentifizierungsinformationen bereitzustellen.

Nachfolgend finden Sie ein Beispiel für den Authorization-Header-Wert. Zur besseren Lesbarkeit werden diesem Beispiel Zeilenumbrüche hinzugefügt:

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

In der folgenden Tabelle werden die verschiedenen Komponenten des Authorization Header-Werts im vorherigen Beispiel beschrieben:

Komponente Description
AWS4-HMAC-SHA256

Der Algorithmus, der zur Berechnung der Signatur verwendet wurde. Sie müssen diesen Wert angeben, wenn Sie AWS Signature Version 4 für die Authentifizierung verwenden.

Die Zeichenfolge gibt AWS Signature Version 4 (AWS4) und den Signaturalgorithmus (HMAC-SHA256) an.

Credential

Ihre Zugriffsschlüssel-ID und die Informationen des Gültigkeitsbereichs, darunter Datum, Region und Service, die zur Berechnung der Signatur verwendet wurden.

Diese Zeichenfolge verfügt über das folgende Format:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

Wobei Folgendes gilt:

  • <date>Der Wert wird mithilfe des YYYYMMDD Formats angegeben.

  • <aws-service>Der Wert wird s3 angegeben, wenn eine Anfrage an Amazon S3 gesendet wird.

SignedHeaders

Eine durch Semikolons getrennte Liste von Anforderungs-Headern, die Sie zur Berechnung von Signature verwendet haben. Die Liste enthält nur Header-Namen und die Header-Namen müssen in Kleinbuchstaben geschrieben sein. Beispiel:

host;range;x-amz-date
Signature Die 256-Bit-Signatur, ausgedrückt als 64 hexadezimale Kleinbuchstaben. Beispiel:
fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
Beachten Sie, dass die Signaturberechnungen je nach gewählter Option zur Übertragung der Nutzlast variieren.

Die Signaturberechnungen variieren je nach der Methode, die Sie für die Übertragung der Anforderungsnutzlast wählen. S3 unterstützt die folgenden Optionen:

  • Nutzdaten in einem einzigen Block übertragen — In diesem Fall haben Sie die folgenden Optionen zur Berechnung der Signatur:

    • Option für signierte Nutzdaten — Sie können optional die gesamte Payload-Prüfsumme berechnen und sie in die Signaturberechnung einbeziehen. Dies bietet zusätzliche Sicherheit, aber Sie müssen Ihre Nutzdaten zweimal lesen oder im Speicher zwischenspeichern.

      Um beispielsweise eine Datei hochzuladen, müssen Sie die Datei zuerst lesen, um einen Nutzlast-Hash für die Signaturberechnung und erneut für die Übertragung zu berechnen, wenn Sie die Anfrage erstellen. Für kleinere Nutzlasten könnte dieser Ansatz vorzuziehen sein. Bei großen Dateien kann es jedoch ineffizient sein, die Datei zweimal zu lesen. Daher sollten Sie die Daten möglicherweise stattdessen in Blöcken hochladen.

      Wir empfehlen, aus Sicherheitsgründen die Payload-Prüfsumme anzugeben.

    • Option „Unsigned Payload“ — Beziehen Sie die Payload-Prüfsumme nicht in die Signaturberechnung ein.

    Eine schrittweise Anleitung zur Berechnung der Signatur und zur Berechnung des Authorization-Header-Werts finden Sie unter. Signaturberechnungen für den Autorisierungs-Header: Übertragung der Nutzlast in einem einzigen Block (AWS Signatur (Version 4)

  • Nutzlast in mehreren Blöcken übertragen (blockierter Upload) — In diesem Fall übertragen Sie die Nutzlast in Blöcken. Sie können eine Nutzlast unabhängig von der Nutzlastgröße in Blöcken übertragen.

    Sie können Ihre Nutzlast in Blöcke aufteilen. Dies können Blöcke mit fester oder variabler Größe sein. Indem Sie Daten in Blöcken hochladen, vermeiden Sie, dass zur Berechnung der Signatur die gesamte Nutzlast gelesen wird. Stattdessen berechnen Sie für den ersten Block eine Startsignatur, die nur die Anforderungsheader verwendet. Der zweite Chunk enthält die Signatur für den ersten Chunk, und jeder nachfolgende Chunk enthält die Signatur für den Chunk, der ihm vorausgeht. Am Ende des Uploads senden Sie einen letzten Block mit 0 Byte an Daten, der die Signatur des letzten Blocks der Payload enthält. Weitere Informationen finden Sie unter Signaturberechnungen für den Autorisierungs-Header: Übertragung von Nutzdaten in mehreren Blöcken (Chunked Upload) (AWS Signatur (Version 4).

Beim Signieren Ihrer Anfragen können Sie entweder AWS Signature Version 4 oder AWS Signature Version 4A verwenden. Der Hauptunterschied zwischen den beiden wird dadurch bestimmt, wie die Signatur berechnet wird. Bei AWS Signature Version 4A enthält die Signatur keine Region-specific Informationen und wird mithilfe des AWS4-ECDSA-P256-SHA256 Algorithmus berechnet.

Zusätzlich zu diesen Optionen haben Sie die Möglichkeit, Ihrer Anfrage einen Trailer beizufügen. Um Ihrer Anfrage einen Trailer beizufügen, müssen Sie diesen in der Kopfzeile angeben, indem Sie x-amz-content-sha256 den entsprechenden Wert festlegen. Wenn Sie einen abschließenden Header verwenden, müssen Sie die Namen der nachfolgenden Header x-amz-trailer in den Header aufnehmen und als Zeichenfolge in einer kommagetrennten Liste angeben. Alle nachfolgenden Header werden nach dem letzten Abschnitt geschrieben. Wenn Sie die Daten in mehreren Blöcken hochladen, müssen Sie einen letzten Block mit 0 Byte an Daten senden, bevor Sie den abschließenden Header senden.

Wenn Sie eine Anfrage senden, müssen Sie Amazon S3 mitteilen, welche der vorherigen Optionen Sie bei Ihrer Signaturberechnung gewählt haben, indem Sie den x-amz-content-sha256 Header mit einem der folgenden Werte hinzufügen:

Header-Wert Description

Tatsächlicher Payload-Prüfsummenwert

Dieser Wert ist die tatsächliche Prüfsumme Ihres Objekts und nur möglich, wenn Sie die Daten in einem einzigen Block hochladen.

UNSIGNED-PAYLOAD

Verwenden Sie diesen Wert, wenn Sie das Objekt als einzelnen unsignierten Block hochladen.

STREAMING-UNSIGNED-PAYLOAD-TRAILER

Verwenden Sie dies, wenn Sie eine unsignierte Nutzlast über mehrere Chunks senden. In diesem Fall haben Sie auch einen abschließenden Header, nachdem der Chunk hochgeladen wurde.

STREAMING-AWS4-HMAC-SHA256-PAYLOAD

Verwenden Sie dies, wenn Sie eine Nutzlast über mehrere Chunks senden und die Chunks mit signiert werden. AWS4-HMAC-SHA256 Dadurch wird eine SigV4-Signatur erzeugt.

STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER

Verwenden Sie dies, wenn Sie eine Nutzlast über mehrere Chunks senden und die Chunks mit signiert werden. AWS4-HMAC-SHA256 Dadurch wird eine SigV4-Signatur erzeugt. Außerdem ist der Digest für die Chunks als abschließender Header enthalten.

STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD

Verwenden Sie diesen Wert, wenn Sie eine Nutzlast über mehrere Chunks senden und die Chunks mit signiert werden. AWS4-ECDSA-P256-SHA256 Dies erzeugt eine SigV4A-Signatur.

STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD-TRAILER

Verwenden Sie dies, wenn Sie eine Nutzlast über mehrere Chunks senden und die Chunks mit signiert werden. AWS4-ECDSA-P256-SHA256 Dies erzeugt eine SigV4A-Signatur. Außerdem ist der Digest für die Chunks als abschließender Header enthalten.

Nach Erhalt der Anfrage erstellt Amazon S3 die zu signierende Zeichenfolge anhand der Informationen im Header und im Authorization Header neu. date Anschließend wird mit dem Authentifizierungsdienst überprüft, ob die Signaturen übereinstimmen. Das Anforderungsdatum kann entweder mithilfe des HTTP Date - oder des x-amz-date Headers angegeben werden. Wenn beide Header vorhanden sind, hat x-amz-date Vorrang.

Wenn die Signaturen übereinstimmen, verarbeitet Amazon S3 Ihre Anfrage. Andernfalls schlägt Ihre Anfrage fehl.

Weitere Informationen finden Sie unter den folgenden Themen:

Signaturberechnungen für den Autorisierungs-Header: Übertragung der Nutzlast in einem einzigen Block (AWS Signatur (Version 4)

Signaturberechnungen für den Autorisierungs-Header: Übertragung von Nutzdaten in mehreren Blöcken (Chunked Upload) (AWS Signatur (Version 4)

Signaturberechnungen für nachfolgende Header (aufgeteilte Uploads) (AWS Signatur (Version 4)