Verwenden Sie signierte Cookies - Amazon CloudFront

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.

Verwenden Sie signierte Cookies

CloudFront Mit signierten Cookies können Sie kontrollieren, wer auf Ihre Inhalte zugreifen kann, wenn Sie Ihre aktuellen URLs nicht ändern möchten oder wenn Sie Zugriff auf mehrere eingeschränkte Dateien gewähren möchten, z. B. auf alle Dateien im Abonnentenbereich einer Website. In diesem Thema werden die Überlegungen bei der Verwendung von signierten Cookies erläutert und es wird beschrieben, wie signierte Cookies mithilfe von vordefinierten und benutzerdefinierten Richtlinien eingerichtet werden.

Entscheiden Sie sich dafür, vordefinierte oder benutzerdefinierte Richtlinien für signierte Cookies zu verwenden

Wenn Sie ein signiertes Cookie erstellen, schreiben Sie eine Richtlinienanweisung im JSON-Format, welche die Einschränkungen für das signierte Cookie festlegt, z. B. wie lange das Cookie gültig ist. Sie können vordefinierte oder benutzerdefinierte Richtlinien verwenden. In der folgenden Tabelle werden vordefinierte und benutzerdefinierte Richtlinien verglichen:

Beschreibung Vordefinierte Richtlinie Benutzerdefinierte Richtlinie

Sie können die Richtlinienanweisung für mehrere Dateien wiederverwenden. Um die Richtlinienanweisung wiederzuverwenden, müssen Sie Platzhalterzeichen im Resource-Objekt verwenden. Weitere Informationen finden Sie unter Werte, die Sie in der Richtlinienanweisung für eine benutzerdefinierte Richtlinie für signierte Cookies angeben.)

Nein

Ja

Sie können das Datum und die Zeit festlegen, ab denen Benutzer auf Ihre Inhalte zugreifen können.

Nein

Ja (optional)

Sie können das Datum und die Zeit festlegen, ab denen Benutzer nicht mehr auf Ihre Inhalte zugreifen können.

Ja

Ja

Sie können die IP-Adresse oder den Bereich von IP-Adressen der Benutzer festlegen, die auf Ihre Inhalte zugreifen können.

Nein

Ja (optional)

Informationen zum Erstellen von signierten Cookies mit einer vordefinierten Richtlinie finden Sie unter Legen Sie signierte Cookies mithilfe einer vordefinierten Richtlinie fest.

Informationen zum Erstellen von signierten Cookies mit einer benutzerdefinierten Richtlinie finden Sie unter Legen Sie signierte Cookies mithilfe einer benutzerdefinierten Richtlinie fest.

Funktionsweise von signierten Cookies

Hier finden Sie eine Übersicht darüber, wie Sie signierte Cookies konfigurieren CloudFront und wie Sie CloudFront reagieren, wenn ein Benutzer eine Anfrage einreicht, die ein signiertes Cookie enthält.

  1. Geben Sie in Ihrer CloudFront Distribution eine oder mehrere vertrauenswürdige Schlüsselgruppen an, die die öffentlichen Schlüssel enthalten, anhand derer die URL-Signatur überprüft werden CloudFront kann. Sie verwenden die entsprechenden privaten Schlüssel, um die URLs zu signieren.

    Weitere Informationen finden Sie unter Geben Sie Unterzeichner an, die signierte URLs und signierte Cookies erstellen können.

  2. Sie entwickeln Ihre Anwendung so, dass ermittelt wird, ob ein Benutzer über Zugriff auf Ihre Inhalte verfügen sollte, und wenn dies der Fall ist, drei Set-Cookie-Header an den Viewer zu senden. (Jeder Set-Cookie Header kann nur ein Name-Wert-Paar enthalten, und für ein CloudFront signiertes Cookie sind drei Name-Wert-Paare erforderlich.) Sie müssen die Set-Cookie-Header an den Viewer senden, bevor der Viewer Ihre privaten Inhalte anfragt. Wenn Sie eine kurze Ablaufzeit für das Cookie angeben, möchten Sie vielleicht auch drei weitere Set-Cookie-Header als Reaktion auf folgende Anfragen senden, sodass der Benutzer weiterhin Zugriff hat.

    In der Regel weist Ihre CloudFront Distribution mindestens zwei Cache-Verhaltensweisen auf, eines, für das keine Authentifizierung erforderlich ist, und eines, für das eine Authentifizierung erforderlich ist. Die Fehlerseite für den sicheren Teil der Website enthält eine Weiterleitung oder einen Link zu einer Anmeldeseite.

    Wenn Sie Ihre Distribution so konfigurieren, dass Dateien zwischengespeichert werden, die auf Cookies basieren, werden separate Dateien CloudFront nicht zwischengespeichert, die auf den Attributen in signierten Cookies basieren.

  3. Ein Benutzer meldet sich auf Ihrer Website an und bezahlt entweder für Inhalte oder erfüllt andere Anforderungen für den Zugriff.

  4. Ihre Anwendung gibt die Set-Cookie-Header in der Antwort zurück und der Viewer speichert die Name-Wert-Paare.

  5. Der Benutzer fordert eine Datei an.

    Der Browser des Benutzers oder ein anderer Viewer ruft die Name-Wert-Paare aus Schritt 4 ab und fügt sie zu der Anfrage in einem Cookie-Header hinzu. Dies ist das signierte Cookie.

  6. CloudFront verwendet den öffentlichen Schlüssel, um die Signatur im signierten Cookie zu validieren und um zu bestätigen, dass das Cookie nicht manipuliert wurde. Wenn die Signatur ungültig ist, wird die Anfrage abgelehnt.

    Wenn die Signatur im Cookie gültig ist, überprüft CloudFront die Richtlinienerklärung im Cookie (oder erstellt eine, wenn Sie eine vordefinierte Richtlinie verwenden), um zu bestätigen, dass die Anfrage noch gültig ist. Wenn Sie beispielsweise ein Anfangs- und Enddatum und eine Uhrzeit für das Cookie angegeben haben, wird CloudFront bestätigt, dass der Benutzer versucht, während des Zeitraums, für den Sie den Zugriff zulassen möchten, auf Ihre Inhalte zuzugreifen.

    Wenn die Anfrage die Anforderungen der Richtlinienerklärung CloudFront erfüllt, wird Ihr Inhalt genauso bereitgestellt wie bei Inhalten, für die keine Einschränkungen gelten: Es wird festgestellt, ob sich die Datei bereits im Edge-Cache befindet, leitet die Anfrage gegebenenfalls an den Ursprung weiter und gibt die Datei an den Benutzer zurück.

Wenn Sie den Domain-Parameter in einem Set-Cookie-Header angeben, geben Sie einen möglichst genauen Wert ein, um das Potenzial für den Zugriff durch einen Benutzer mit demselben Stammdomänennamen zu verringern. Beispielsweise ist app.example.com gegenüber example.com vorzuziehen – insbesondere, wenn Sie example.com nicht kontrollieren. Dadurch können Sie verhindern, dass ein Benutzer von www.example.com aus auf Ihre Inhalte zugreift.

Gehen Sie wie folgt vor, um diese Art von Angriff zu verhindern:

  • Schließen Sie die Cookie-Attribute Expires und Max-Age aus, damit der Set-Cookie-Header ein Sitzungs-Cookie erstellt. Sitzungs-Cookies werden automatisch gelöscht, wenn der Benutzer den Browser schließt. Dies verringert das Risiko, dass ein Benutzer unbefugten Zugriff auf Ihre Inhalte erhält.

  • Fügen Sie das Attribut Secure ein, damit das Cookie verschlüsselt wird, wenn ein Viewer es in eine Anfrage einfügt.

  • Verwenden Sie wenn möglich eine benutzerdefinierte Richtlinie und fügen Sie die IP-Adresse des Viewers ein.

  • Geben Sie auf der Grundlage davon, wie lange Sie Benutzern Zugriff auf Ihre Inhalte gewähren möchten, im Attribut CloudFront-Expires eine möglichst kurze, vernünftige Ablaufzeit an.

Um festzustellen, ob ein signiertes Cookie noch gültig ist, werden das Ablaufdatum und die Uhrzeit im Cookie zum Zeitpunkt der HTTP-Anfrage CloudFront überprüft. Wenn ein Client unmittelbar vor der Ablaufzeit mit dem Download einer großen Datei beginnt, sollte der Download abgeschlossen werden, auch wenn die Ablaufzeit während des Downloads überschritten wird. Wenn die TCP-Verbindung getrennt wird und der Client nach Überschreitung der Ablaufzeit versucht, den Download erneut zu starten, schlägt der Download fehl.

Wenn ein Client Bereichs-GETs verwendet, um eine Datei in kleineren Teilen abzurufen, schlagen alle GET-Anfragen nach Überschreitung der Ablaufzeit fehl. Weitere Informationen zu Bereichs-GETs finden Sie unter Wie CloudFront werden Teilanforderungen für ein Objekt (Bereichs-GETs) verarbeitet.

Beispiel-Code und Drittanbieter-Tools

Der Beispiel-Code für private Inhalte zeigt nur die Erstellung der Signatur für signierte URLs. Das Erstellen einer Signatur für ein signiertes Cookie ist jedoch sehr ähnlich, deshalb ist ein Großteil des Beispiel-Codes auch hier von Bedeutung. Weitere Informationen finden Sie unter den folgenden Themen: