Verwenden signierter 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 signierter Cookies

CloudFront Mit signierten Cookies können Sie steuern, 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 Bereich der Abonnenten 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.

Auswählen zwischen vordefinierten und benutzerdefinierten Richtlinien für signierte Cookies

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 Einrichten signierter Cookies mit einer vordefinierten Richtlinie.

Informationen zum Erstellen von signierten Cookies mit einer benutzerdefinierten Richtlinie finden Sie unter Einrichten signierter Cookies mit einer benutzerdefinierten Richtlinie.

Funktionsweise von signierten Cookies

Im Folgenden finden Sie eine Übersicht darüber, wie Sie CloudFront für signierte Cookies konfigurieren und wie CloudFront reagiert, wenn ein Benutzer eine Anforderung sendet, die ein signiertes Cookie enthält.

  1. Geben Sie in Ihrer CloudFront Verteilung eine oder mehrere vertrauenswürdige Schlüsselgruppen an, die die öffentlichen Schlüssel enthalten, die zur Überprüfung der URL-Signatur verwenden CloudFront kann. Sie verwenden die entsprechenden privaten Schlüssel, um die URLs zu signieren.

    Weitere Informationen finden Sie unter Festlegen der Aussteller, 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 ein CloudFront signiertes Cookie erfordert drei Name-Wert-Paare.) 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 verfügt Ihre CloudFront Verteilung über mindestens zwei Cache-Verhaltensweisen, eine, die keine Authentifizierung erfordert, und eine, die eine Authentifizierung erfordert. Die Fehlerseite für den sicheren Teil der Website enthält eine Weiterleitung oder einen Link zu einer Anmeldeseite.

    Wenn Sie Ihre Verteilung so konfigurieren, dass Dateien auf der Grundlage von Cookies zwischengespeichert werden, speichert CloudFront keine separaten Dateien auf der Grundlage der Attribute in signierten Cookies zwischen.

  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 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, CloudFront schaut auf die Richtlinienanweisung im Cookie (oder erstellt eine, wenn Sie eine vordefinierte Richtlinie verwenden), um zu bestätigen, dass die Anforderung weiterhin gültig ist. Wenn Sie beispielsweise ein Anfangs- und Enddatum und eine Anfangs- und Endzeit für das Cookie angegeben haben, CloudFront bestätigt , dass der Benutzer versucht, während des Zeitraums, in dem Sie den Zugriff zulassen möchten, auf Ihre Inhalte zuzugreifen.

    Wenn die Anforderung die Anforderungen in der Richtlinienanweisung erfüllt, CloudFront stellt Ihre Inhalte genauso bereit wie Inhalte, die nicht eingeschränkt sind: Es bestimmt, ob sich die Datei bereits im Edge-Cache befindet, leitet die Anforderung bei Bedarf 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, CloudFront überprüft das Ablaufdatum und die Ablaufzeit im Cookie zum Zeitpunkt der HTTP-Anforderung. 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 So CloudFront verarbeitet Teilanforderungen für ein Objekt (Bereichs-GETs).

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: