Imposta i cookie firmati utilizzando una politica personalizzata - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Imposta i cookie firmati utilizzando una politica personalizzata

Per definire un cookie firmato che utilizza una policy personalizzata, procedi come indicato di seguito.

Vedi i seguenti esempi di coppie di Set-Cookie intestazioni.

Se desideri utilizzare un nome di dominio alternativo come example.org inURLs, devi aggiungere il nome di dominio alternativo alla tua distribuzione indipendentemente dal fatto che tu specifichi o meno l'attributo. Domain Per ulteriori informazioni, consulta Nomi di dominio alternativi () CNAMEs nell'argomento Riferimento alle impostazioni di distribuzione.

Esempio 1

Puoi utilizzare le Set-Cookie intestazioni per un cookie firmato quando utilizzi il nome di dominio associato alla tua distribuzione in for your files. URLs

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
Esempio 2

Puoi utilizzare le Set-Cookie intestazioni per un cookie firmato quando utilizzi un nome di dominio alternativo (example.org) nella cartella per i tuoi file. URLs

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
Esempio 3

Puoi utilizzare le coppie di Set-Cookie intestazioni per una richiesta firmata quando utilizzi il nome di dominio associato alla tua distribuzione in for your files. URLs

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
Esempio 4

Puoi utilizzare le coppie di Set-Cookie intestazioni per una richiesta firmata quando utilizzi un nome di dominio alternativo (example.org) associato alla tua distribuzione nella sezione per i tuoi file. URLs

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

Crea una dichiarazione politica per un cookie firmato che utilizza una politica personalizzata

Per creare una dichiarazione di policy per una policy personalizzata, completa i seguenti passaggi. Per vari esempi di dichiarazioni di policy che controllano l'accesso a file in vari modi, consulta Esempi di dichiarazioni di policy per un cookie firmato che utilizza una policy personalizzata.

Creazione di una dichiarazione di policy per un cookie firmato che utilizza una policy personalizzata
  1. Costruisci la dichiarazione politica utilizzando il seguente JSON formato.

    { "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" } } } ] }

    Tieni presente quanto segue:

  2. Rimuovi tutti gli spazi vuoti (inclusi tabulazioni e caratteri di nuova riga) dalla dichiarazione politica. È possibile che tu debba includere caratteri di escape nella stringa del codice dell'applicazione.

  3. Base64: codifica l'informativa utilizzando la codifica base64. MIME Per ulteriori informazioni, vedere Sezione 6.8, Base64 Content-Transfer-Encoding in RFC2045, (Multipurpose Internet Mail Extensions) Parte prima: Formato dei corpi dei messaggi Internet. MIME

  4. Sostituire i caratteri non validi in una stringa di query con caratteri validi. URL La tabella seguente elenca i caratteri validi e non validi.

    Sostituisci questi caratteri non validi Con questi caratteri validi

    +

    - (trattino)

    =

    _ (carattere di sottolineatura)

    /

    ~ (tilde)

  5. Includi il valore risultante nella tua intestazione Set-Cookie dopo CloudFront-Policy=.

  6. Crea una firma per l'intestazione Set-Cookie per CloudFront-Signature sottoponendo a hashing, firmando e codificando in base64 la dichiarazione di policy. Per ulteriori informazioni, consulta Crea una firma per un cookie firmato che utilizza una politica personalizzata.

Valori da specificare in una dichiarazione di policy per cookie firmati che utilizzano una policy personalizzata

Quando crei una dichiarazione di policy per una policy personalizzata, specifichi i valori seguenti.

Risorsa

La base che URL include le stringhe di query, se presenti:

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

Importante

Se si omette il Resource parametro, gli utenti possono accedere a tutti i file associati a qualsiasi distribuzione associata alla coppia di chiavi utilizzata per creare il signedURL.

Puoi specificare un solo valore per Resource.

Tieni presente quanto segue:

  • Protocollo: il valore deve iniziare con http:// o https://.

  • Parametri di stringa di query: se non hai parametri di stringa di query, ometti il punto di domanda.

  • Caratteri jolly: puoi utilizzare il carattere jolly che corrisponde a zero o più caratteri (*) o il carattere jolly che corrisponde esattamente a un carattere (?) in qualsiasi punto della stringa. Ad esempio, il valore:

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

    includerebbe (ad esempio) i seguenti file:

    • 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

  • Nomi di dominio alternativi: se si specifica un nome di dominio alternativo (CNAME) inURL, è necessario specificare il nome di dominio alternativo quando si fa riferimento al file nella pagina Web o nell'applicazione. Non specificare Amazon S3 URL per il file.

DateLessThan

La data e l'ora di scadenza per il URL formato orario Unix (in secondi) e il Coordinated Universal Time (UTC). Non racchiudere il valore tra virgolette.

Ad esempio, le 10:00 del 16 marzo 2015 vengono UTC convertite in 1426500000 nel formato orario Unix.

Per ulteriori informazioni, consulta When CloudFront controlla la data e l'ora di scadenza in un cookie firmato.

DateGreaterThan (Facoltativo)

Data e ora di inizio opzionali per il URL formato orario Unix (in secondi) e il Coordinated Universal Time (UTC). Agli utenti non è consentito accedere al file entro o prima della data e dell'ora specificate. Non racchiudere il valore tra virgolette.

IpAddress (Facoltativo)

L'indirizzo IP del client che effettua la GET richiesta. Tieni presente quanto segue:

  • Per consentire a qualsiasi indirizzo IP di accedere al file, ometti il parametro IpAddress.

  • Puoi specificare un indirizzo IP o un intervallo di indirizzi IP. Ad esempio, non puoi definire la policy per consentire l'accesso se l'indirizzo IP del client è in uno dei due intervalli distinti.

  • Per consentire l'accesso da un singolo indirizzo IP, specifica:

    "IPv4 IP address/32"

  • È necessario specificare gli intervalli di indirizzi IP in IPv4 CIDR formato standard (ad esempio,192.0.2.0/24). Per ulteriori informazioni, vedere RFC4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan,. https://tools.ietf.org/html/rfc4632

    Importante

    Gli indirizzi IP in IPv6 formato, ad esempio 2001:0 db 8:85 a3: :8a2e: 0370:7334, non sono supportati.

    Se utilizzi una politica personalizzata che include, non abilitarla per la distribuzione. IpAddress IPv6 Se desideri limitare l'accesso ad alcuni contenuti in base all'indirizzo IP e IPv6 alle richieste di supporto per altri contenuti, puoi creare due distribuzioni. Per ulteriori informazioni, consulta Abilita IPv6 nell'argomento Riferimento alle impostazioni di distribuzione.

Esempi di dichiarazioni di policy per un cookie firmato che utilizza una policy personalizzata

Gli esempi di dichiarazioni di policy seguenti mostrano il modo in cui controllare l'accesso a un determinato file, a tutti i file in una directory o a tutti i file associati a un ID di coppia di chiavi. Gli esempi mostrano inoltre come controllare l'accesso da un singolo indirizzo IP o da un intervallo di indirizzi IP e come impedire agli utenti di utilizzare il cookie firmato dopo una data e un'ora specificate.

Se copiate e incollate uno di questi esempi, rimuovete gli spazi vuoti (inclusi tabulazioni e caratteri di nuova riga), sostituite i valori con i vostri valori e includete un carattere di nuova riga dopo la parentesi di chiusura (}).

Per ulteriori informazioni, consulta Valori da specificare in una dichiarazione di policy per cookie firmati che utilizzano una policy personalizzata.

Esempio di dichiarazione politica: accedere a un file da un intervallo di indirizzi IP

Il seguente esempio di politica personalizzata in un cookie firmato specifica che un utente può accedere al file https://d111111abcdef8.cloudfront.net/game_download.zip dagli indirizzi IP compresi nell'intervallo 192.0.2.0/24 fino alle 10:00 del 1° gennaio 2023: UTC

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

Esempio di dichiarazione politica: accedere a tutti i file in una directory da un intervallo di indirizzi IP

L'esempio di policy personalizzata seguente consente di creare cookie firmati per qualsiasi file nella directory training, come indicato dal carattere jolly * nel parametro Resource. Gli utenti possono accedere al file da un indirizzo IP compreso nell'intervallo 192.0.2.0/24 fino alle 10:00 UTC del 1° gennaio 2013:

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

Ogni cookie firmato in cui si utilizza questa politica include una base URL che identifica un file specifico, ad esempio:

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

Esempio di dichiarazione politica: accedere a tutti i file associati a un ID di coppia di chiavi da un indirizzo IP

L'esempio di policy personalizzata seguente ti consente di definire cookie firmati per qualsiasi file associato a qualsiasi distribuzione, come indicato dal carattere jolly * nel parametro Resource. L'utente deve utilizzare l'indirizzo I 192.0.2.10/32. (Il valore 192.0.2.10/32 in CIDR notazione si riferisce a un singolo indirizzo IP,192.0.2.10.) I file sono disponibili solo dalle 10:00 del 1° gennaio 2013 alle UTC 10:00 del 2 gennaio 2013: UTC

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

Ogni cookie firmato in cui si utilizza questa politica include una base URL che identifica un file specifico in una CloudFront distribuzione specifica, ad esempio:

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

Il cookie firmato include anche un ID di coppia di chiavi, che deve essere associato a un gruppo di chiavi attendibile nella distribuzione (d111111abcdef8.cloudfront.net) specificata nella base. URL

Crea una firma per un cookie firmato che utilizza una politica personalizzata

La firma di un cookie firmato che utilizza una policy personalizzata è una versione con hash, firma e codifica base64 della dichiarazione di policy.

Per ulteriori informazioni ed esempi su come sottoporre a hashing, firmare e codificare la dichiarazione di policy, consulta:

Creazione di una firma per un cookie firmato utilizzando una policy personalizzata
  1. Utilizzate la funzione hash SHA -1 e RSA per eseguire l'hash e firmare la dichiarazione di JSON policy creata durante la procedura. Per creare la dichiarazione politica per un URL firmatario che utilizza una politica personalizzata Utilizzate la versione dell'informativa che non include più spazi vuoti ma che non è ancora stata codificata in base 64.

    Per la chiave privata richiesta dalla funzione hash, utilizza una chiave privata la cui chiave pubblica si trova in un gruppo di chiavi attendibili attivo per la distribuzione.

    Nota

    Il metodo utilizzato per sottoporre a hashing e firmare la dichiarazione di policy dipende dalla piattaforma e dal linguaggio di programmazione. Per il codice di esempio, consulta Esempi di codice per creare una firma per una persona firmata URL.

  2. Rimuovi gli spazi vuoti (inclusi tabulazioni e caratteri di nuova riga) dalla stringa con hash e firmata.

  3. Base64: codifica la stringa usando la codifica base64. MIME Per ulteriori informazioni, vedere Sezione 6.8, Base64 Content-Transfer-Encoding in RFC2045, (Multipurpose Internet Mail Extensions) Parte prima: Formato dei corpi dei messaggi Internet. MIME

  4. Sostituire i caratteri non validi in una stringa di query con caratteri validi. URL La tabella seguente elenca i caratteri validi e non validi.

    Sostituisci questi caratteri non validi Con questi caratteri validi

    +

    - (trattino)

    =

    _ (carattere di sottolineatura)

    /

    ~ (tilde)

  5. Includi il valore risultante nell'intestazione Set-Cookie per la coppia nome-valore CloudFront-Signature= e ritorna a Impostazione di un cookie firmato che utilizza una policy personalizzata per aggiungere l'intestazione Set-Cookie per CloudFront-Key-Pair-Id.