Menü
Amazon Web Services
Allgemeine Referenz (Version 1.0)

Signieren von AWS-Anforderungen mit Signature Version 4

In diesem Abschnitt wird erläutert, wie Sie eine Signatur erstellen und einer Anforderung hinzufügen.

Beispiel für die Signierung in einer Anforderung

Im folgenden Beispiel wird gezeigt, wie eine HTTPS-Anforderungen möglicherweise ausschaut, die von Ihrem Client an AWS gesendet wird (ohne Signierinformationen).

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Host: iam.amazonaws.com X-Amz-Date: 20150830T123600Z

Nachdem Sie die Signieraufgaben abgeschlossen haben, fügen Sie der Anforderung Authentifizierungsinformationen hinzu. Zum Hinzufügen der Authentifizierungsinformationen stehen Ihnen zwei Methoden zur Verfügung:

Authorization-Header

Sie können die Authentifizierunginformationen der Anforderung mit einem Authorization-Header hinzufügen. Auch wenn der HTTP-Header Authorization heißt, werden die Signierinformationen für die Authentifizierung verwendet, um festzustellen, von wem die Anforderung stammt.

Der Authorization-Header umfasst die folgenden Informationen:

  • Algorithmus, den Sie für die Signierung verwendet haben (AWS4-HMAC-SHA256)

  • Umfang der Anmeldeinformationen (mit Ihrer Zugriffsschlüssel-ID)

  • Liste signierter Header

  • Berechnete Signatur. Die Signatur basiert auf den Informationen Ihrer Anforderung. Zur Erstellung der Signatur verwenden Sie den geheimen AWS-Zugriffsschlüssel. Die Signatur bestätigt AWS Ihre Identität.

Im folgenden Beispiel wird gezeigt, wie die vorherige Anforderung nach der Erstellung der Signierinformationen und deren Hinzufügen zur Anforderung im Authorization-Header ausschauen könnte.

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7 content-type: application/x-www-form-urlencoded; charset=utf-8 host: iam.amazonaws.com x-amz-date: 20150830T123600Z

Abfragezeichenfolge

Als Alternative zum Hinzufügen von Authentifizierungsinformationen mit einem HTTP-Anforderungsheader können Sie sie auch in die Abfragezeichenfolge einfügen. Die Abfragezeichenfolge enthält alles, was zur Anforderung gehört, z. B. den Namen und die Parameter für die Aktion, das Datum und die Authentifizierungsinformationen.

Das folgende Beispiel zeigt, wie Sie eine GET-Anforderung mit den Aktions- und Authentifizierungsdaten in der Abfragezeichenfolge erstellen könnten.

GET 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 HTTP/1.1 content-type: application/x-www-form-urlencoded; charset=utf-8 host: iam.amazonaws.com

GET- und POST-Anforderungen in der Abfrage-API

Mit der Abfrage-API, die von vielen AWS-Services unterstützt wird, können Sie Anforderungen entweder mit HTTP GET oder POST erstellen. (In der Abfrage-API können Sie GET selbst dann verwenden, wenn Sie Anforderungen erstellen, die den Status ändern. Das heißt, die Abfrage-API ist nicht inhärent RESTful.) Da GET-Anforderungen Parameter an die Abfragezeichenfolge übergeben, sind sie auf die maximale Länge einer URL beschränkt. Wenn eine Anforderung eine große Nutzlast enthält (wenn Sie z. B. eine umfangreiche IAM-Richtlinie hochladen oder viele Parameter im JSON-Format für eine DynamoDB-Anforderung versenden), können Sie im Allgemeinen eine POST-Anforderung verwenden.

Der Signaturprozess ist für beide Arten von Anforderungen identisch.

Zusammenfassung der Signierschritte

Um eine signierte Anforderung zu erstellen, führen Sie folgende Schritte aus:

Anmerkung

Die AWS SDKs übernehmen die Berechnung der Signatur für Sie, sodass Sie den Signaturprozess nicht manuell abschließen müssen. Weitere Informationen finden Sie unter Tools für Amazon Web Services.

Der Signaturprozess wird in folgenden zusätzlichen Ressourcen veranschaulicht:

  • Beispiele für das Ableiten eines Signaturschlüssels für Signature Version 4 Diese Seite zeigt, wie ein Signaturschlüssel mit Java, C#, Python, Ruby und JavaScript abgeleitet wird.

  • Beispiele für den vollständigen Signierprozess in Version 4 (Python) Diese Programme in Python enthalten umfassende Beispiele für den Signaturprozess. Die Beispiele zeigen den Signaturprozess mit einer POST-Anforderung, mit einer GET-Anforderung, die über die entsprechenden Signierinformationen in einem Abfrageheader verfügt, und mit einer GET-Anforderung, die die Signierinformationen in der Abfragezeichenfolge enthält.

  • Signaturversion 4-Testsuite Dieses herunterladbare Paket enthält verschiedene Beispiele mit Signierinformationen für die verschiedenen Schritte des Signaturprozesses. Sie können diese Beispiele verwenden, um zu prüfen, ob Ihr Signiercode in jedem Schritt des Prozesses die richtigen Ergebnisse produziert.