Protezione di asset della rete per la distribuzione di contenuti (CDN) di Azure con l'autenticazione basata su tokenSecuring Azure Content Delivery Network assets with token authentication

Importante

Questa è una funzionalità della rete CDN Premium di Azure fornita da Verizon e non è disponibile con prodotti della rete CDN Standard di Azure.This is a feature of Azure CDN Premium from Verizon, and is not available with Azure CDN Standard products. Per un confronto delle funzionalità della rete CDN, vedere Panoramica della rete per la distribuzione di contenuti (rete CDN) di Azure.For a comparison of CDN features, see Azure CDN Overview.

PanoramicaOverview

L'autenticazione basata su token è un meccanismo che consente di impedire alla rete CDN di distribuire asset ai client non autorizzati,Token authentication is a mechanism that allows you to prevent the Azure Content Delivery Network (CDN) from serving assets to unauthorized clients. L'autenticazione basata su token viene eseguita generalmente per evitare il "collegamento attivo" del contenuto, in cui un altro sito Web, come ad esempio una bacheca, usa gli asset senza autorizzazione.Token authentication is typically done to prevent "hotlinking" of content, in which a different website, such as a message board, uses your assets without permission. Il collegamento attivo può avere effetto sui costi di distribuzione di contenuti.Hotlinking can have an impact on your content delivery costs. Abilitando l'autenticazione del token nella rete CDN, le richieste vengono autenticate dal server perimetrale della rete CDN prima che questa distribuisca i contenuti.By enabling token authentication on CDN, requests are authenticated by CDN edge server before the CDN delivers the content.

FunzionamentoHow it works

L'autenticazione basata su token verifica che le richieste vengano generate da un sito attendibile imponendo nelle richieste la presenza di un valore token contenente informazioni codificate sul richiedente.Token authentication verifies that requests are generated by a trusted site by requiring requests to contain a token value that holds encoded information about the requester. Il contenuto viene distribuito a un richiedente solo se le informazioni codificate soddisfano i requisiti. In caso contrario, le richieste vengono negate.Content is served to a requester only if the encoded information meets the requirements; otherwise, requests are denied. È possibile impostare i requisiti usando uno o più dei parametri seguenti:You can set up the requirements by using one or more of the following parameters:

  • Paese: consentire o negare le richieste che provengono dai paesi specificati dal relativo codice paese.Country: Allow or deny requests that originate from the countries specified by their country code.
  • URL: consentire solo le richieste che corrispondono all'asset o al percorso specificato.URL: Allow only requests that match the specified asset or path.
  • Host: consentire o negare le richieste che usano gli host specificati nell'intestazione della richiesta.Host: Allow or deny requests that use the specified hosts in the request header.
  • Referrer: consentire o negare la richiesta dal referrer specificato.Referrer: Allow or deny request from the specified referrer.
  • Indirizzo IP: consentire solo le richieste che hanno origine da un indirizzo IP o da una subnet IP specifica.IP address: Allow only requests that originated from specific IP address or IP subnet.
  • Protocollo: consentire o negare le richieste basate sul protocollo usato per richiedere il contenuto.Protocol: Allow or deny requests based on the protocol used to request the content.
  • Scadenza: assegnare un periodo di data e ora per assicurare che un collegamento rimanga valido solo per un periodo di tempo limitato.Expiration time: Assign a date and time period to ensure that a link remains valid only for a limited time period.

Per altre informazioni, vedere gli esempi di configurazione dettagliati per ogni parametro in Configurazione dell'autenticazione basata su token.For more information, see the detailed configuration examples for each parameter in Setting up token authentication.

Architettura di riferimentoReference architecture

Il diagramma di flusso di lavoro seguente descrive il modo in cui la rete CDN usa l'autenticazione basata su token per il funzionamento con l'app Web.The following workflow diagram describes how the CDN uses token authentication to work with your web app.

Flusso di lavoro dell'autenticazione basata su token della rete CDN

Logica di convalida dei token nell'endpoint di rete CDNToken validation logic on CDN endpoint

Il diagramma di flusso seguente illustra come la rete CDN di Azure convalida la richiesta di un client quando viene configurata l'autenticazione basata su token nell'endpoint di rete CDN.The following flowchart describes how Azure CDN validates a client request when token authentication is configured on CDN endpoint.

Logica di convalida dei token nella rete CDN

Configurazione dell'autenticazione basata su tokenSetting up token authentication

  1. Dal portale di Azure passare al profilo di rete CDN e quindi fare clic su Manage (Gestisci) per avviare il portale supplementare.From the Azure portal, browse to your CDN profile, and then click Manage to launch the supplemental portal.

    Pulsante Manage (Gestisci) del profilo di rete CDN

  2. Passare il puntatore su HTTP Large (Large HTTP) e quindi fare clic su Token Auth (Autenticazione token) nel riquadro a comparsa.Hover over HTTP Large, then click Token Auth in the flyout. È poi possibile impostare i parametri di crittografia e la chiave di crittografia come indicato di seguito:You can then set up the encryption key and encryption parameters as follows:

    1. Creare uno o più chiavi di crittografia.Create one or more encryption keys. Una chiave di crittografia fa distinzione tra maiuscole e minuscole e può contenere qualsiasi combinazione di caratteri alfanumerici.An encryption key is case-sensitive and can contain any combination of alphanumeric characters. Eventuali altri tipi di caratteri, inclusi gli spazi, non sono consentiti.Any other types of characters, including spaces, are not allowed. La lunghezza massima consentita è di 250 caratteri.The maximum length is 250 characters. Per garantire che le chiavi di crittografia vengano generate in modo casuale, è consigliabile crearle usando lo strumento OpenSSL.To ensure that your encryption keys are random, it is recommended that you create them by using the OpenSSL tool.

      Lo strumento OpenSSL presenta la sintassi seguente:The OpenSSL tool has the following syntax:

      rand -hex <key length>

      ad esempio:For example:

      OpenSSL> rand -hex 32

      Per evitare tempi di inattività, creare una chiave primaria e una di backup.To avoid downtime, create both a primary and a backup key. Quando la chiave primaria viene aggiornata, una chiave di backup garantisce l'accesso continuo ai contenuti.A backup key provides uninterrupted access to your content when your primary key is being updated.

    2. Immettere una chiave di crittografia univoca nella casella Primary Key (Chiave primaria) e, facoltativamente, immettere una chiave di backup nella casella Backup Key (Chiave di backup).Enter a unique encryption key in the Primary Key box and optionally enter a backup key in the Backup Key box.

    3. Selezionare la versione minima di crittografia per ogni chiave nel relativo elenco Minimum Encryption Version (Versione minima di crittografia) e quindi fare clic su Update (Aggiorna):Select the minimum encryption version for each key from its Minimum Encryption Version list, then click Update:

      • V2: indica che la chiave può essere usata per generare token di versione 2.0 e 3.0.V2: Indicates that the key can be used to generate version 2.0 and 3.0 tokens. Usare questa opzione solo se si esegue una transizione da una chiave di crittografia legacy versione 2.0 a una chiave di versione 3.0.Use this option only if you are transitioning from a legacy version 2.0 encryption key to a version 3.0 key.
      • V3: (impostazione consigliata) indica che la chiave può essere usata solo per generare token di versione 3.0.V3: (Recommended) Indicates that the key can only be used to generate version 3.0 tokens.

      Chiave di configurazione per l'autenticazione basata su token di rete CDN

    4. Per configurare i parametri di crittografia e generare un token, usare lo strumento di crittografia.Use the encrypt tool to set up encryption parameters and generate a token. Grazie allo strumento è possibile consentire o negare le richieste in base a ora di scadenza, paese, referrer, protocollo e IP client (in qualsiasi combinazione).With the encrypt tool, you can allow or deny requests based on expiration time, country, referrer, protocol, and client IP (in any combination). Sebbene non esista alcun limite al numero e alla combinazione di parametri che possono essere combinati per formare un token, la lunghezza totale di un token è limitata a 512 caratteri.Although there is no limit to the number and combination of parameters that can be combined to form a token, the total length of a token is limited to 512 characters.

      Strumento di crittografia della rete CDN

      Immettere i valori per uno o più parametri di crittografia seguenti nella sezione Encrypt Tool (Strumento di crittografia):Enter values for one or more of the following encryption parameters in the Encrypt Tool section:

      Nome parametroParameter name DescrizioneDescription
      ec_expireec_expire Assegna un'ora di scadenza a un token, dopo la quale il token scade.Assigns an expiration time to a token, after which the token expires. Le richieste inviate dopo l'ora di scadenza verranno negate.Requests submitted after the expiration time are denied. Questo parametro usa un timestamp Unix basato sul numero di secondi trascorsi dal periodo standard Unix di 1/1/1970 00:00:00 GMT.This parameter uses a Unix timestamp, which is based on the number of seconds since the standard Unix epoch of 1/1/1970 00:00:00 GMT. È possibile usare gli strumenti online per eseguire la conversione dall'ora solare all'ora Unix e viceversa.(You can use online tools to convert between standard time and Unix time.)> Ad esempio, se si vuole che il token scada in data 12/31/2016 12:00:00 GMT, inserire il valore del timestamp Unix 1483185600.For example, if you want the token to expire at 12/31/2016 12:00:00 GMT, enter the Unix timestamp value, 1483185600.
      ec_url_allowec_url_allow Consente di adattare i token a un particolare asset o percorso.Allows you to tailor tokens to a particular asset or path. Limita l'accesso alle richieste il cui URL inizia con un percorso relativo specifico.It restricts access to requests whose URL start with a specific relative path. Gli URL distinguono tra maiuscole e minuscole.URLs are case-sensitive. Inserire più percorsi separandoli con una virgola; non aggiungere spazi.Input multiple paths by separating each path with a comma; do not add spaces. A seconda dei requisiti, è possibile configurare valori diversi per ogni livello di accesso.Depending on your requirements, you can set up different values to provide different level of access.> Ad esempio, per l'URL http://www.mydomain.com/pictures/city/strasbourg.png sono consentite queste richieste per i valori di input seguenti:For example, for the URL http://www.mydomain.com/pictures/city/strasbourg.png, these requests are allowed for the following input values:
      • Valore di input /: sono consentite tutte le richieste.Input value /: All requests are allowed.
      • Valore di input /pictures: sono consentite le richieste riportate di seguito.Input value /pictures, the following requests are allowed:
        • http://www.mydomain.com/pictures.png
        • http://www.mydomain.com/pictures/city/strasbourg.png
        • http://www.mydomain.com/picturesnew/city/strasbourgh.png
      • Valore di input /pictures/: sono consentite solo le richieste contenenti il percorso /pictures/,Input value /pictures/: Only requests containing the /pictures/ path are allowed. ad esempio http://www.mydomain.com/pictures/city/strasbourg.png.For example, http://www.mydomain.com/pictures/city/strasbourg.png.
      • Valore di input /pictures/city/strasbourg.png: sono consentite solo le richieste per questo specifico percorso e asset.Input value /pictures/city/strasbourg.png: Only requests for this specific path and asset are allowed.
      ec_country_allowec_country_allow Consente solo le richieste che hanno origine da uno o più paesi specificati.Only allows requests that originate from one or more specified countries. Le richieste che hanno origine da tutti gli altri paesi verranno negate.Requests that originate from all other countries are denied. Uso di un codice paese ISO 3166 di due lettere per ogni singolo paese e separarli tra loro con una virgola; non aggiungere uno spazio.Use a two-letter ISO 3166 country code for each country and separate each one with a comma; do not add a space. Ad esempio, se si desidera consentire l'accesso solo da Stati Uniti e Francia, inserire US,FR.For example, if you want to allow access from only the United States and France, enter US,FR.
      ec_country_denyec_country_deny Respinge solo le richieste che hanno origine da uno o più paesi specificati.Denies requests that originate from one or more specified countries. Le richieste che hanno origine da tutti gli altri paesi verranno consentite.Requests that originate from all other countries are allowed. L'implementazione è la stessa del parametro ec_country_allow.The implementation is the same as the ec_country_allow parameter. Se il codice di un paese è presente in entrambi i parametri ec_country_allow e ec_country_deny, il parametro ec_country_allow ha la precedenza.If a country code is present in both the ec_country_allow and ec_country_deny parameters, the ec_country_allow parameter takes precedence.
      ec_ref_allowec_ref_allow Consente solo le richieste dal referrer specificato.Only allows requests from the specified referrer. Un referrer identifica l'URL della pagina Web collegata alla risorsa richiesta.A referrer identifies the URL of the web page that is linked to the resource being requested. Non includere il protocollo nel valore del parametro.Do not include the protocol in the parameter value.>
      Sono consentiti i tipi di input seguenti:The following types of input are allowed:
      • Un nome host o un nome host e un percorso.A hostname or a hostname and a path.
      • Più referrer.Multiple referrers. Aggiungere più referrer separandoli con una virgola; non aggiungere uno spazio.To add multiple referrers, separate each referrer with a comma; do not add a space. Se si specifica un valore per il referrer, ma le informazioni sul referrer non vengono inviate nella richiesta a causa della configurazione del browser, la richiesta viene negata per impostazione predefinita.If you specify a referrer value, but the referrer information is not sent in the request due to the browser configuration, the request is denied by default.
      • Richieste con informazioni sui referrer mancanti o vuote.Requests with missing or blank referrer information. Per impostazione predefinita, il parametro ec_ref_allow blocca questi tipi di richieste.By default, the ec_ref_allow parameter blocks these types of requests. Per consentire queste richieste, immettere il testo "missing" o inserire un valore vuoto (usando una virgola finale).To allow these requests, enter either the text, "missing", or enter a blank value (by using a trailing comma).
      • Sottodomini.Subdomains. Per consentire sottodomini, immettere un asterisco (*).To allow subdomains, enter an asterisk (*). Ad esempio, per consentire tutti i sottodomini di contoso.com, immettere *.contoso.com.For example, to allow all subdomains of contoso.com, enter *.contoso.com.

      Ad esempio, per consentire l'accesso per le richieste da www.contoso.com, tutti i sottodomini in contoso2.com e le richieste con referrer vuoti o mancanti, inserire www.contoso.com,*.contoso.com,missing.For example, to allow access for requests from www.contoso.com, all subdomains under contoso2.com, and requests with blank or missing referrers, enter www.contoso.com,*.contoso.com,missing.
      ec_ref_denyec_ref_deny Respinge le richieste dal referrer specificato.Denies requests from the specified referrer. L'implementazione è la stessa del parametro ec_ref_allow.The implementation is the same as the ec_ref_allow parameter. Se un referrer è presente in entrambi i parametri ec_ref_allow e ec_ref_deny, il parametro ec_ref_allow ha la precedenza.If a referrer is present in both the ec_ref_allow and ec_ref_deny parameters, the ec_ref_allow parameter takes precedence.
      ec_proto_allowec_proto_allow Consente solo le richieste dal protocollo specificato.Only allows requests from the specified protocol. I valori validi sono http, https o http,https.Valid values are http, https, or http,https.
      ec_proto_denyec_proto_deny Respinge le richieste dal protocollo specificato.Denies requests from the specified protocol. L'implementazione è la stessa del parametro ec_proto_allow.The implementation is the same as the ec_proto_allow parameter. Se un protocollo è presente in entrambi i parametri ec_proto_allow e ec_proto_deny, il parametro ec_proto_allow ha la precedenza.If a protocol is present in both the ec_proto_allow and ec_proto_deny parameters, the ec_proto_allow parameter takes precedence.
      ec_clientipec_clientip Limita l'accesso all'indirizzo IP del richiedente specificato.Restricts access to the specified requester's IP address. Sono supportati sia IPV4 che IPV6.Both IPV4 and IPV6 are supported. È possibile specificare un singolo indirizzo IP di richiesta o gli indirizzi IP associati a una subnet specifica.You can specify either a single request IP address or IP addresses associated with a specific subnet. Ad esempio, 11.22.33.0/22 consente le richieste provenienti da indirizzi IP che vanno sa 11.22.32.1 a 11.22.35.254.For example, 11.22.33.0/22 allows requests from IP addresses 11.22.32.1 to 11.22.35.254.
    5. Dopo aver immesso i valori dei parametri di crittografia, selezionare una chiave da crittografare (se sono state create una chiave primaria e una chiave di backup) dall'elenco Key To Encrypt (Chiave da crittografare).After you have finished entering encryption parameter values, select a key to encrypt (if you have created both a primary and a backup key) from the Key To Encrypt list.

    6. Selezionare una versione di crittografia dall'elenco Encryption Version (Versione di crittografia): V2 per la versione 2 o V3 per versione 3 (scelta consigliata).Select an encryption version from the Encryption Version list: V2 for version 2 or V3 for version 3 (recommended).

    7. Fare clic su Crittografa per generare il token.Click Encrypt to generate the token.

      Il token generato viene visualizzato nella casella Generated Token (Token generato).After the token is generated, it is displayed in the Generated Token box. Per usare il token, aggiungerlo come stringa di query alla fine del file nel percorso dell'URL,To use the token, append it as a query string to the end of the file in your URL path. ad esempio http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b.For example, http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b.

    8. Facoltativamente, verificare il token con lo strumento per decrittografare in modo che sia possibile visualizzare i parametri del token.Optionally, test your token with the decrypt tool so that you can view your token's parameters. Incollare il valore del token nella casella Token to Decrypt (Token da decrittografare).Paste the token value in the Token to Decrypt box. Selezionare la chiave di crittografia da usare dall'elenco Key to Decrypt (Chiave da decrittografare) e fare clic su Decrittografa.Select the encryption key to use from the Key To Decrypt list, then click Decrypt.

      I parametri del token decrittografato vengono visualizzati nella casella Original Parameters (Parametri originali).After the token is decrypted, its parameters are displayed in the Original Parameters box.

    9. Facoltativamente, è possibile personalizzare il tipo di codice di risposta restituito quando viene negata una richiesta.Optionally, customize the type of response code that is returned when a request is denied. Selezionare Abilitato, quindi selezionare il codice di risposta dall'elenco Codice di risposta.Select Enabled, then select the response code from the Response Code list. Il Nome intestazione viene impostato automaticamente su Posizione.Header Name is automatically set to Location. Fare clic su Salva per implementare il nuovo codice di risposta.Click Save to implement the new response code. Per alcuni codici di risposta è anche necessario immettere l'URL della pagina di errore nella casella Valore intestazione.For certain response codes, you must also enter the URL of your error page in the Header Value box. Il codice di risposta 403 (Forbidden (Non consentito)) è selezionato per impostazione predefinita.The 403 response code (Forbidden) is selected by default.

  3. In HTTP Large (HTTP grande) fare clic su Rules Engine (Motore regole di business).Under HTTP Large, click Rules Engine. Il motore di regole di business consente di definire i percorsi per applicare la funzionalità, abilitare la funzionalità di autenticazione basata su token e altre funzionalità correlate all'autenticazione basata su token.You use the rules engine to define paths to apply the feature, enable the token authentication feature, and enable additional token authentication-related capabilities. Per altre informazioni, vedere Informazioni di riferimento sul motore regole.For more information, see Rules engine reference.

    1. Selezionare una regola esistente o crearne una nuova per definire l'asset o il percorso per il quale applicare l'autenticazione basata su token.Select an existing rule or create a new rule to define the asset or path for which you want to apply token authentication.
    2. Per abilitare l'autenticazione basata su token in una regola, selezionare Token Auth (Autenticazione basata su token) dall'elenco Features (Funzionalità) e fare clic su Abilitato.To enable token authentication on a rule, select Token Auth from the Features list, then select Enabled. Fare clic su Update (Aggiorna) se si aggiorna una regola o su Add (Aggiungi) se si crea una regola.Click Update if you are updating a rule or Add if you are creating a rule.

      Esempio di abilitazione dell'autenticazione basata su token nel motore di regole di business della rete CDN

  4. Nel motore di regole di business è anche possibile abilitare altre funzionalità correlate all'autenticazione basata su token.In the rules engine, you can also enable additional token authentication-related features. Per abilitare le funzionalità seguenti, selezionarle dall'elenco Features (Funzionalità) e fare clic su Abilitato.To enable any of the following features, select it from the Features list, then select Enabled.

    • Token Auth Denial Code (Codice negazione autenticazione token): determina il tipo di risposta restituita all'utente quando viene negata una richiesta.Token Auth Denial Code: Determines the type of response that is returned to a user when a request is denied. Le regole impostate qui sostituiscono il codice di risposta impostato nella sezione Custom Denial Handling (Gestione negazione personalizzata) della pagina di autenticazione basata su token.Rules set here override the response code set in the Custom Denial Handling section on the token-based authentication page.
    • Token Auth Ignore URL Case (Maiuscole/minuscole URL rifiuto autenticazione token): determina se l'URL usato per convalidare il token applica la distinzione tra maiuscole e minuscole.Token Auth Ignore URL Case: Determines whether the URL used to validate the token is case-sensitive.
    • Token Auth Parameter (Parametro autenticazione token): rinomina il parametro della stringa di query dell'autenticazione basata su token visualizzato nell'URL richiesto.Token Auth Parameter: Renames the token auth query string parameter that appears in the requested URL.

      Esempio di impostazioni di autenticazione basata su token nel motore di regole di business della rete CDN

  5. Per personalizzare il token, accedere al codice sorgente in GitHub.You can customize your token by accessing source code in GitHub. I linguaggi disponibili includono:Available languages include:

    • CC
    • C#C#
    • PHPPHP
    • PerlPerl
    • JavaJava
    • PythonPython

Prezzi dei provider e funzionalità della rete CDN di AzureAzure CDN features and provider pricing

Per informazioni sulle funzionalità, vedere Panoramica della rete per la distribuzione di contenuti (rete CDN) di Azure.For information about features, see CDN Overview. Per informazioni sui prezzi, vedere Prezzi della rete per la distribuzione di contenuti.For information about pricing, see Content Delivery Network pricing.