Legen Sie signierte Cookies mithilfe einer benutzerdefinierten Richtlinie fest - 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.

Legen Sie signierte Cookies mithilfe einer benutzerdefinierten Richtlinie fest

Führen Sie die folgenden Schritte aus, um ein signiertes Cookie einzurichten, das eine benutzerdefinierte Richtlinie verwendet:

Sehen Sie sich die folgenden Beispiele für Set-Cookie Header-Paare an.

Wenn Sie einen alternativen Domainnamen wie example.org in verwenden möchten URLs, müssen Sie den alternativen Domainnamen zu Ihrer Distribution hinzufügen, unabhängig davon, ob Sie das Domain Attribut angeben. Weitere Informationen finden Sie unter Alternative Domainnamen (CNAMEs) im Thema Referenz zu Verteilungseinstellungen.

Beispiel 1

Sie können die Set-Cookie Header für ein signiertes Cookie verwenden, wenn Sie den Domainnamen verwenden, der Ihrer Distribution zugeordnet ist, in Ihren URLs Dateien.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Beispiel 2

Sie können die Set-Cookie Header für ein signiertes Cookie verwenden, wenn Sie URLs für Ihre Dateien einen alternativen Domainnamen (example.org) verwenden.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Beispiel 3

Sie können die Set-Cookie Header-Paare für eine signierte Anfrage verwenden, wenn Sie den Domainnamen verwenden, der Ihrer Distribution zugeordnet ist, URLs für Ihre Dateien.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=dd111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Beispiel 4

Sie können die Set-Cookie Header-Paare für eine signierte Anfrage verwenden, wenn Sie einen alternativen Domainnamen (example.org) verwenden, der URLs Ihrer Distribution in Ihren Dateien zugeordnet ist.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly

Erstellen Sie eine Richtlinienerklärung für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet

Zum Erstellen einer Richtlinienanweisung für eine benutzerdefinierte Richtlinie führen Sie die folgenden Schritte aus. Einige Beispiel-Richtlinienanweisungen, die den Zugriff auf Dateien auf verschiedene Weisen kontrollieren, finden Sie unter Beispiel-Richtlinienanweisungen für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet.

So erstellen Sie die Richtlinienanweisung für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet
  1. Erstellen Sie die Richtlinienanweisung unter Verwendung des folgenden JSON-Formats.

    { "Statement": [ { "Resource": "URL of the file", "Condition": { "DateLessThan": { "AWS:EpochTime":required ending date and time in Unix time format and UTC }, "DateGreaterThan": { "AWS:EpochTime":optional beginning date and time in Unix time format and UTC }, "IpAddress": { "AWS:SourceIp": "optional IP address" } } } ] }

    Beachten Sie Folgendes:

  2. Entfernen Sie alle Leerzeichen (einschließlich Tabulatoren und Zeilenumbrüche) aus der Richtlinienerklärung. Möglicherweise müssen Sie in der Zeichenfolge im Anwendungscode Escape-Zeichen einfügen.

  3. Nehmen Sie eine Base64-Codierung der Richtlinienanweisung mithilfe von MIME-Base64-Codierung vor. Weitere Informationen finden Sie in Abschnitt 6.8, Base64 Content-Transfer-Encoding in RFC 2045, MIME (Multipurpose Internet Mail Extensions), Erster Teil: Format von Internet-Nachrichtentexten.

  4. Ersetzen Sie Zeichen, die in einer URL-Abfragezeichenfolge nicht gültig sind, durch gültige Zeichen. In der folgenden Tabelle sind ungültige und gültige Zeichen aufgelistet.

    Ersetzen Sie diese ungültigen Zeichen Durch diese gültigen Zeichen

    +

    - (Bindestrich)

    =

    _ (Unterstrich)

    /

    ~ (Tilde)

  5. Fügen Sie den resultierenden Wert im Set-Cookie-Header hinter CloudFront-Policy= ein.

  6. Erstellen Sie eine Signatur für den Set-Cookie-Header für CloudFront-Signature, indem Sie die Richtlinienanweisung hashen, signieren und eine Base64-Codierung vornehmen. Weitere Informationen finden Sie unter Erstellen Sie eine Signatur für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet.

Werte, die Sie in der Richtlinienanweisung für eine benutzerdefinierte Richtlinie für signierte Cookies angeben

Beim Erstellen einer Richtlinienanweisung für eine benutzerdefinierte Richtlinie geben Sie die folgenden Werte an.

Ressource

Die Basis-URL einschließlich Ihrer Abfragezeichenfolgen, sofern vorhanden:

https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Wichtig

Wenn Sie den Resource-Parameter weglassen, können Benutzer auf alle Dateien zugreifen, die mit einer Verteilung verknüpft sind, die mit dem zum Erstellen der signierten URL verwendeten Schlüsselpaar verknüpft ist.

Sie können nur einen Wert für Resource angeben.

Beachten Sie Folgendes:

  • Protokoll – Der Wert muss mit http:// oder https:// beginnen.

  • Abfragezeichenfolgeparameter – Wenn Sie über keine Abfragezeichenfolgeparameter verfügen, lassen Sie das Fragezeichen weg.

  • Platzhalter – Sie können das Platzhalterzeichen, das null oder mehr Zeichen (*), oder das Platzhalterzeichen, das genau einem Zeichen (?) irgendwo in der Zeichenfolge entspricht, verwenden. Beispielsweise würde der Wert:

    https://d111111abcdef8.cloudfront.net/*game_download.zip*

    u. a. die folgenden Dateien umfassen:

    • https://d111111abcdef8.cloudfront.net/game_download.zip

    • https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

    • https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

  • Alternative Domänennamen – Wenn Sie einen alternativen Domänennamen (CNAME) in der URL angeben, müssen Sie diesen alternativen Domänennamen angeben, wenn Sie auf Ihrer Webseite oder in Ihrer Anwendung auf die Datei verweisen. Geben Sie nicht die Amazon S3-URL für Datei an.

DateLessThan

Das Ablaufdatum und die Ablaufzeit für die URL im Unix-Zeitformat (in Sekunden) und in koordinierter Weltzeit (UTC). Setzen Sie den Wert nicht in Anführungszeichen.

Beispielsweise wird der 16. März 2015, 10:00 Uhr UTC in 1426500000 im Unix-Zeitformat umgewandelt.

Weitere Informationen finden Sie unter Wenn das Ablaufdatum und die Uhrzeit in einem signierten Cookie CloudFront überprüft.

DateGreaterThan (Fakultativ)

Ein optionales Datum und eine optionale Zeit für die URL im Unix-Zeitformat (in Sekunden) und in koordinierter Weltzeit (UTC). Benutzer dürfen am oder vor dem angegebenen Datum und der angegebenen Uhrzeit nicht auf die Datei zugreifen. Setzen Sie den Wert nicht in Anführungszeichen.

IpAddress (Fakultativ)

Die IP-Adresse des Clients, der die GET-Anfrage stellt. Beachten Sie Folgendes:

  • Um allen IP-Adressen den Zugriff auf die Datei zu gewähren, lassen Sie den Parameter IpAddress weg.

  • Sie können entweder eine IP-Adresse oder einen IP-Adressbereich angeben. Sie können die Richtlinie beispielsweise nicht so einrichten, dass Zugriff gewährt wird, wenn die IP-Adresse des Clients sich in einem von zwei getrennten Bereichen befindet.

  • Um den Zugriff von einer einzigen IP-Adresse zu gewähren, geben Sie Folgendes an:

    "IPv4 IP address/32"

  • Sie müssen IP-Adressbereiche im IPv4 CIDR-Standardformat angeben (z. B.192.0.2.0/24). Weitere Informationen erhalten Sie unter RFC 4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/rfc4632.

    Wichtig

    IP-Adressen im IPv6 Format 2001:0 db 8:85 a3: :8a2e: 0370:7334 werden nicht unterstützt.

    Wenn Sie eine benutzerdefinierte Richtlinie verwenden, die Folgendes umfasst: Aktivieren Sie diese Option nicht für die Verteilung. IpAddress IPv6 Wenn Sie den Zugriff auf einige Inhalte anhand der IP-Adresse und der IPv6 Support-Anfragen für andere Inhalte einschränken möchten, können Sie zwei Distributionen erstellen. Weitere Informationen finden Sie unter Aktivieren IPv6 im Thema Referenz zu Verteilungseinstellungen.

Beispiel-Richtlinienanweisungen für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet

Die folgenden Beispiel-Richtlinienanweisungen zeigen, wie der Zugriff auf eine bestimmte Datei, auf alle Dateien in einem Verzeichnis oder auf alle mit einer Schlüsselpaar-ID verknüpften Dateien kontrolliert wird. Die Beispiele zeigen auch, wie der Zugriff von einer einzelnen IP-Adresse oder einem Bereich von IP-Adressen kontrolliert wird und wie Sie verhindern, dass Benutzer das signierte Cookie nach einem festgelegten Datum und einer festgelegten Zeit verwenden.

Wenn Sie eines dieser Beispiele kopieren und einfügen, entfernen Sie alle Leerzeichen (einschließlich Tabulatoren und Zeilenumbruchzeichen), ersetzen Sie die Werte durch Ihre eigenen Werte und fügen Sie nach der schließenden Klammer (}) ein Zeilenumbruchzeichen ein.

Weitere Informationen finden Sie unter Werte, die Sie in der Richtlinienanweisung für eine benutzerdefinierte Richtlinie für signierte Cookies angeben.

Beispiel für eine Richtlinienerklärung: Greifen Sie von einem IP-Adressbereich aus auf eine Datei zu

Die folgende Beispiel-Richtlinienanweisung in einem signierten Cookie legt fest, dass ein Benutzer bis zum 1. Januar 2023, 10:00 Uhr UTC, von IP-Adressen im Bereich https://d111111abcdef8.cloudfront.net/game_download.zip auf die Datei 192.0.2.0/24 zugreifen kann:

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

Beispiel für eine Richtlinienerklärung: Greifen Sie von einem IP-Adressbereich aus auf alle Dateien in einem Verzeichnis zu

Mit der folgenden Beispiel-Richtlinienanweisung können Sie signierte Cookies für jede Datei im training-Verzeichnis erstellen wie durch das Platzhalterzeichen * im Resource-Parameter verdeutlicht. Benutzer können bis zum 1. Januar 2013, 10:00 Uhr UTC, von IP-Adressen im Bereich 192.0.2.0/24 auf die Datei zugreifen:

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

Jedes signierte Cookie, in dem Sie diese Richtlinie verwenden, enthält eine Basis-URL, die eine bestimmte Datei kennzeichnet, zum Beispiel:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Beispiel für eine Richtlinienanweisung: Greifen Sie von einer IP-Adresse aus auf alle Dateien zu, die mit einer Schlüsselpaar-ID verknüpft sind

Mit der folgenden Beispiel-Richtlinienanweisung können Sie signierte Cookies für jede mit einer beliebigen Verteilung verknüpfte Datei einrichten wie durch das Platzhalterzeichen * im Resource-Parameter verdeutlicht. Der Benutzer muss die IP-Adresse verwende 192.0.2.10/32. (Der Wert 192.0.2.10/32 in CIDR-Notation bezieht sich auf eine einzelne IP-Adresse, 192.0.2.10.) Die Dateien sind nur vom 1. Januar 2013, 10:00 Uhr UTC, bis zum 2. Januar 2013, 10:00 Uhr UTC, verfügbar:

{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1357034400 }, "DateLessThan": { "AWS:EpochTime": 1357120800 } } } ] }

Jedes signierte Cookie, in dem Sie diese Richtlinie verwenden, enthält eine Basis-URL, die eine bestimmte Datei in einer bestimmten CloudFront Distribution identifiziert, zum Beispiel:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Das signierte Cookie enthält auch eine Schlüsselpaar-ID, die mit einem vertrauenswürdigen Aussteller in der Verteilung (d111111abcdef8.cloudfront.net) verknüpft werden muss, die Sie in der Basis-URL angeben.

Erstellen Sie eine Signatur für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet

Bei der Signatur für ein signiertes Cookie, das eine benutzerdefinierte Richtlinie verwendet, handelt es sich um eine gehashte, signierte und Base64-codierte Version der Richtlinienanweisung.

Weitere Informationen und Beispiele für das Hashing, Signieren und Codieren der Richtlinienanweisung finden Sie unter:

So erstellen Sie eine Signatur für ein signiertes Cookie mithilfe einer benutzerdefinierten Richtlinie
  1. Verwenden Sie die SHA-1-Hash-Funktion und RSA, um die im Verfahren So erstellen Sie die Richtlinienanweisung für eine signierte URL, die eine benutzerdefinierte Richtlinie verwendet erstellte JSON-Richtlinienanweisung zu hashen und zu signieren. Verwenden Sie die Version der Richtlinienanweisung, die keine Leerzeichen mehr enthält, die aber noch nicht Base64-codiert wurde.

    Verwenden Sie für den privaten Schlüssel, der für die Hash-Funktion erforderlich ist, einen privaten Schlüssel, dessen öffentlicher Schlüssel sich in einer aktiven vertrauenswürdigen Schlüsselgruppe für die Verteilung befindet.

    Anmerkung

    Die Methode, die Sie zum Hashen und Signieren der Richtlinienanweisung verwenden, ist abhängig von Ihrer Programmiersprache und Plattform. Einen Beispiel-Code finden Sie unter Code-Beispiele für das Erstellen einer Signatur für eine signierte URL.

  2. Entfernen Sie Leerzeichen (einschließlich Tabulatoren und Zeilenumbruchzeichen) aus der Hash-Zeichenfolge und der signierten Zeichenfolge.

  3. Nehmen Sie eine Base64-Codierung der Zeichenfolge mithilfe von MIME-Base64-Codierung vor. Weitere Informationen finden Sie in Abschnitt 6.8, Base64 Content-Transfer-Encoding in RFC 2045, MIME (Multipurpose Internet Mail Extensions), Teil 1: Format von Internet-Nachrichtentexten.

  4. Ersetzen Sie Zeichen, die in einer URL-Abfragezeichenfolge nicht gültig sind, durch gültige Zeichen. In der folgenden Tabelle sind ungültige und gültige Zeichen aufgelistet.

    Ersetzen Sie diese ungültigen Zeichen Durch diese gültigen Zeichen

    +

    - (Bindestrich)

    =

    _ (Unterstrich)

    /

    ~ (Tilde)

  5. Fügen Sie den resultierenden Wert im Set-Cookie-Header für das CloudFront-Signature=-Name-Wert-Paar ein und kehren Sie zu So richten Sie ein signiertes Cookies mit einer benutzerdefinierten Richtlinie ein zurück, um den Set-Cookie-Header für CloudFront-Key-Pair-Id hinzuzufügen.