Esempi di firma di accesso condiviso di servizio

In questo argomento viene illustrato un esempio in cui si utilizzano le firme di accesso condiviso con l'API REST. Le firme di accesso condiviso consentono di fornire diritti di accesso a contenitori e BLOB, tabelle, code o file. Con una firma di accesso condiviso, è possibile concedere agli utenti l'accesso limitato a un intervallo specifico di contenitore, Blob, coda, tabella o entità di tabella per un determinato periodo di tempo. Per informazioni dettagliate sulla costruzione, l'analisi e l'uso delle firme di accesso condiviso, vedere Delega dell'accesso con una firma di accesso condiviso. Per informazioni sull'uso della libreria client di archiviazione .NET per creare firme di accesso condiviso, vedere Creare e usare una firma di accesso condiviso.

Esempi di Blob

In questa sezione sono disponibili esempi che illustrano le firme di accesso condiviso per le operazioni REST sui Blob.

Esempio: ottenere un Blob mediante la firma di accesso condiviso di un contenitore

Versioni precedenti al 2013-08-15

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per l'accesso in lettura a un contenitore.

Tra i campi per la firma compilati che comprenderanno l'URL sono inclusi:

signedstart=2009-02-09  
signedexpiry=2009-02-10  
signedresource=c  
signedpermissions=r  
signature=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI=  
signedidentifier=YWJjZGVmZw==  
signedversion=2012-02-12  

La firma viene creata come indicato di seguito:

StringToSign = r + \n   
               2009-02-09 + \n  
               2009-02-10 + \n  
               /myaccount/pictures + \n  
               YWJjZGVmZw== + \n  
               2012-02-12  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI=  

L'URL della richiesta specifica le autorizzazioni di lettura nel pictures contenitore per l'intervallo designato. La risorsa rappresentata dall'URL della richiesta è un BLOB, ma la firma di accesso condiviso viene specificata nel contenitore. È anche possibile specificarla nel Blob stesso.

GET https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2012-02-12&st=2009-02-09&se=2009-02-10&sr=c&sp=r&si=YWJjZGVmZw%3d%3d&sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d   
HTTP/1.1  
Host: myaccount.blob.core.windows.net  
x-ms-date: <date>  
  

Versione 2013-08-15 e successive

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per l'accesso in lettura a un contenitore utilizzando la versione 2013-08-15 dei servizi di archiviazione.

Con i nuovi parametri di query introdotti dalla versione 2013-08-15, il client che invia la richiesta è in grado di ignorare le intestazioni di risposta solo per questa firma di accesso condiviso.

Le intestazioni della risposta e i corrispondenti parametri di query sono i seguenti:

Nome dell'intestazione della risposta Parametro della query SAS corrispondente
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Tra i campi che comprendono la stringa da firmare per la firma sono inclusi:

signedstart=2013-08-16  
signedexpiry=2013-08-17  
signedresource=c  
signedpermissions=r  
signedidentifier=YWJjZGVmZw==  
signedversion=2013-08-15  
responsecontent-disposition=file; attachment  
responsecontent-type=binary  

La stringa da firmare viene creata come indicato di seguito:

StringToSign = r + \n   
               2013-08-16 + \n  
               2013-08-17 + \n  
               /myaccount/pictures + \n  
               YWJjZGVmZw== + \n  
               2013-08-15 + \n  
               + \n    
               file; attachment + \n  
               + \n  
               + \n  
               binary  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = a39+YozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ=  

La firma di accesso condiviso specifica le autorizzazioni di accesso in lettura sul contenitore di immagini per l'intervallo definito. La risorsa rappresentata dall'URL della richiesta è un BLOB, ma la firma di accesso condiviso viene specificata nel contenitore. È anche possibile specificarla nel Blob stesso.

GET https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2013-08-15&st=2013-08-16&se=2013-08-17&sr=c&sp=r&rscd=file;%20attachment&rsct=binary &sig=YWJjZGVmZw%3d%3d&sig=a39%2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d HTTP/1.1  
  

Per un client che effettua una richiesta con questa firma, l'operazione Get BLOB verrà eseguita se vengono soddisfatti i criteri seguenti:

  • La richiesta è autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • Il Blob specificato dalla richiesta (/myaccount/pictures/profile.jpg) risiede nel contenitore specificato come risorsa firmata (/myaccount/pictures).

rsct=binary La specifica e rscd=file; attachment nella firma di accesso condiviso esegue rispettivamente l'override delle intestazioni content-type e content-disposition nella risposta.

Un risposta corretta per una richiesta effettuata utilizzando questa firma di accesso condiviso sarà simile a quanto indicato di seguito:

Status Response:  
HTTP/1.1 200 OK  
  
Response Headers:  
x-ms-blob-type: BlockBlob  
Content-Length: 11  
Content-Type: binary  
Content-Disposition: file; attachment  
ETag: "0x8CB171DBEAD6A6B"  
x-ms-version: 2013-08-15  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

Esempio: Caricare un BLOB usando la firma di accesso condiviso di un contenitore

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per la scrittura di un Blob. In questo esempio, viene creata una firma che garantisce le autorizzazioni di accesso in scrittura per tutti i Blob nel contenitore. Quindi si utilizza la firma di accesso condiviso per scrivere su un Blob nel contenitore.

I campi firmati che comprenderanno l'URL includono:

  
signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedresource=c  
signedpermissions=w  
signedidentifier=YWJjZGVmZw==  
signedversion=2015-02-21  
  

La firma viene creata come indicato di seguito:

  
StringToSign = w + \n   
               2015-07-01T08:49Z + \n  
               2015-07-02T08:49Z + \n  
               /myaccount/pictures + \n  
               YWJjZGVmZw== + \n  
               2013-08-15  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs=  
  

L'URL della richiesta specifica le autorizzazioni di scrittura nel pictures contenitore per l'intervallo designato. La risorsa rappresentata dall'URL della richiesta è un BLOB, ma la firma di accesso condiviso viene specificata nel contenitore. È anche possibile specificarla nel Blob stesso.

PUT https://myaccount.blob.core.windows.net/pictures/photo.jpg?sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&  
sr=c&sp=w&si=YWJjZGVmZw%3d%3d&sig=Rcp6gQRfV7WDlURdVTqCa%2bqEArnfJxDgE%2bKH3TCChIs%3d HTTP/1.1  
Host: myaccount.blob.core.windows.net  
  
Content-Length: 12  
  
Hello World.  
  

Con questa firma, Put BLOB verrà chiamato se vengono soddisfatti i criteri seguenti:

  • La richiesta è autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • Il Blob specificato dalla richiesta (/myaccount/pictures/photo.jpg) risiede nel contenitore specificato come risorsa firmata (/myaccount/pictures).

Esempio: eliminare un Blob mediante la firma di accesso condiviso di un Blob

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso che conceda le autorizzazioni di eliminazione per un Blob e che lo elimini.

Attenzione

Una firma di accesso condiviso per un'operazione DELETE deve essere distribuita in modo ponderato, poiché se si consente a un client di eliminare dati potrebbero verificarsi conseguenze impreviste.

Tra i campi per la firma compilati che comprenderanno l'URL sono inclusi:

  
signedstart=2015-07-01T08:49:37.0000000Z  
signedexpiry=2015-07-02T08:49:37.0000000Z  
signedresource=b  
signedpermissions=d  
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==  
signedversion=2015-02-21  
  

La firma viene creata come indicato di seguito:

  
StringToSign = d + \n   
               2015-07-01T08:49:37.0000000Z + \n  
               2015-07-02T08:49:37.0000000Z + \n  
               blob/myaccount/pictures/profile.jpg + \n  
               YWJjZGVmZw==  
               2015-02-21  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
  

Tramite l'URL della richiesta vengono specificate le autorizzazioni di eliminazione sul contenitore di immagini per l'intervallo definito. La risorsa rappresentata dall'URL della richiesta è un BLOB e la firma di accesso condiviso viene specificata nel BLOB. È anche possibile specificarla nel contenitore del Blob per concedere l'autorizzazione di eliminare qualsiasi Blob nel contenitore.

  
DELETE https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2015-02-21&st=2015-07-01T08%3a49%3a37.0000000Z&se=2015-07-02T08%3a49%3a37.0000000Z&sr=b&sp=d&si=YWJjZGVmZw%3d%3d&sig=%2bSzBm0wi8xECuGkKw97wnkSZ%2f62sxU%2b6Hq6a7qojIVE%3d HTTP/1.1  
Host: myaccount.blob.core.windows.net  
Content-Length: 0  
  

Con questa firma, delete BLOB verrà chiamato se vengono soddisfatti i criteri seguenti:

  • La richiesta è autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • Il Blob specificato dalla richiesta (/myaccount/pictures/profile.jpg) corrisponde al Blob specificato come risorsa firmata.

Esempi di file

Questa sezione contiene esempi che illustrano le firme di accesso condiviso per le operazioni REST nei file.

Esempio: Ottenere un file usando la firma di accesso condiviso di una condivisione

Nell'esempio seguente viene illustrato come costruire una firma di accesso condiviso per l'accesso in lettura in una condivisione.

Alcuni parametri di query possono abilitare il client che emette la richiesta per eseguire l'override delle intestazioni di risposta per questa firma di accesso condiviso.

Le intestazioni della risposta e i corrispondenti parametri di query sono i seguenti:

Nome dell'intestazione della risposta Parametro della query SAS corrispondente
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Tra i campi che comprendono la stringa da firmare per la firma sono inclusi:

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedresource=c  
signedpermissions=r  
signature=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI=  
signedidentifier=YWJjZGVmZw==  
signedversion=2015—02-21  
responsecontent-disposition=file; attachment  
responsecontent-type=binary  

La stringa da firmare viene creata come indicato di seguito:

StringToSign = r + \n   
               2015-07-01T08:49Z + \n  
               2015-07-02T08:49Z + \n  
               file/myaccount/pictures + \n  
               YWJjZGVmZw== + \n  
               2015—02-21 + \n  
               + \n    
               file; attachment + \n  
               + \n  
               + \n  
               binary  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = a39+YozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ=  

La firma di accesso condiviso specifica le autorizzazioni di lettura per la condivisione per l'intervallo pictures designato. La risorsa rappresentata dall'URL della richiesta è un file, ma la firma di accesso condiviso viene specificata nella condivisione. È anche possibile specificarlo nel file stesso.

GET https://myaccount.file.core.windows.net/pictures/profile.jpg?sv=2015-02-21&st=2015-07-01T08:49Z&se=2015-07-02T08:49Z&sr=c&sp=r&rscd=file;%20attachment&rsct=binary&sig=YWJjZGVmZw%3d%3d&sig=a39%2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d  
  

Per un client che effettua una richiesta con questa firma, l'operazione Get File verrà eseguita se vengono soddisfatti i criteri seguenti:

  • La richiesta è autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • Il file specificato dalla richiesta (/myaccount/pictures/profile.jpg) si trova all'interno della condivisione specificata come risorsa firmata (/myaccount/pictures).

rsct=binary La specifica e rscd=file; attachment nella firma di accesso condiviso esegue rispettivamente l'override delle content-type intestazioni e content-disposition nella risposta.

Un risposta corretta per una richiesta effettuata utilizzando questa firma di accesso condiviso sarà simile a quanto indicato di seguito:

Status Response:  
HTTP/1.1 200 OK  
  
Response Headers:  
Content-Length: 11  
Content-Type: binary  
Content-Disposition: file; attachment  
ETag: "0x8CB171DBEAD6A6B"  
x-ms-version: 2015-02-21  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

Esempio: Caricare un file usando una firma di accesso condiviso in una condivisione

Nell'esempio seguente viene illustrato come costruire una firma di accesso condiviso per la scrittura di un file. In questo esempio viene creata una firma che concede autorizzazioni di scrittura per tutti i file nella condivisione. Usare quindi la firma di accesso condiviso per scrivere in un file nella condivisione.

Tra i campi per la firma compilati che comprenderanno l'URL sono inclusi:

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedresource=c  
signedpermissions=w  
signature=Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs=  
signedidentifier=YWJjZGVmZw==  
signedversion=2015-02-21  

La firma viene creata come indicato di seguito:

StringToSign = w + \n   
               2015-07-01T08:49Z + \n  
               2015-07-02T08:49Z + \n  
               file/myaccount/pictures + \n  
               YWJjZGVmZw== + \n  
               2015-02-21  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs=  

L'URL della richiesta specifica le autorizzazioni di scrittura nel pictures contenitore per l'intervallo designato. La risorsa rappresentata dall'URL della richiesta è un BLOB, ma la firma di accesso condiviso viene specificata nel contenitore. È anche possibile specificarla nel Blob stesso.

PUT https://myaccount.file.core.windows.net/pictures/photo.jpg?sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-01T08%3a49Z&  
sr=c&sp=w&si=YWJjZGVmZw%3d%3d&sig=Rcp6gQRfV7WDlURdVTqCa%2bqEArnfJxDgE%2bKH3TCChIs%3d HTTP/1.1  
Host: myaccount.blob.core.windows.net  
Content-Length: 12  
  
Hello World.  

Con questa firma verrà chiamato Crea file se vengono soddisfatti i criteri seguenti:

  • La richiesta è autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • Il file specificato dalla richiesta (/myaccount/pictures/photo.jpg) si trova nella condivisione specificata come risorsa firmata (/myaccount/pictures).

Esempio: Eliminare un file usando la firma di accesso condiviso di un file

Nell'esempio seguente viene illustrato come costruire una firma di accesso condiviso che concede autorizzazioni di eliminazione per un file, quindi usa la firma di accesso condiviso per eliminare il file.

Attenzione

Una firma di accesso condiviso per un'operazione DELETE deve essere distribuita in modo giudizio, in quanto consentire a un client di eliminare i dati potrebbe avere conseguenze impreviste.

Tra i campi per la firma compilati che comprenderanno l'URL sono inclusi:

signedstart=2015-07-01T08:49:37.0000000Z  
signedexpiry=2015-07-02T08:49:37.0000000Z  
signedresource=b  
signedpermissions=d  
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==  
signedversion=2015-02-21  

La firma viene creata come indicato di seguito:

StringToSign = d + \n   
               2015-07-01T08:49:37.0000000Z + \n  
               2015-07-02T08:49:37.0000000Z + \n  
               file/myaccount/pictures/profile.jpg + \n  
               YWJjZGVmZw==  
               2015-02-21  
  
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  

L'URL della richiesta specifica le autorizzazioni di eliminazione per la condivisione immagini per l'intervallo designato. La risorsa rappresentata dall'URL della richiesta è un file e la firma di accesso condiviso viene specificata in tale file. È anche possibile specificarlo nella condivisione del file per concedere l'autorizzazione per eliminare qualsiasi file nella condivisione.

DELETE https://myaccount.file.core.windows.net/pictures/profile.jpg?sv=2015-02-21&st=2015-07-01T08%3a49%3a37.0000000Z&se=2015-07-02T08%3a49%3a37.0000000Z&sr=b&sp=d&si=YWJjZGVmZw%3d%3d&sig=%2bSzBm0wi8xECuGkKw97wnkSZ%2f62sxU%2b6Hq6a7qojIVE%3d HTTP/1.1  
Host: myaccount.blob.core.windows.net  
Content-Length: 0  

Con questa firma, delete file verrà chiamato se vengono soddisfatti i criteri seguenti:

  • La richiesta è stata autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • Il file specificato dalla richiesta (/myaccount/pictures/profile.jpg) corrisponde al file specificato come risorsa firmata.

Esempi di accodamento

In questa sezione sono disponibili esempi che illustrano le firme di accesso condiviso per le operazioni REST sulle code. In questi esempi, l'operazione del servizio di accodamento viene eseguita solo dopo che vengono soddisfatti i seguenti criteri:

  • La richiesta è stata autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • La coda specificata dalla richiesta è la stessa coda autorizzata dalla firma di accesso condiviso.

Esempio: recuperare messaggi utilizzando una firma di accesso condiviso

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per il recupero dei messaggi da una coda. Questa firma garantisce le autorizzazioni di elaborazione del messaggio per la coda. Infine, in questo esempio viene utilizzata la firma di accesso condiviso per recuperare un messaggio dalla coda.

Esaminare i campi di firma firmati seguenti, la costruzione della stringa da firmare e la costruzione dell'URL che chiama l'operazione Get Messages dopo l'autorizzazione della richiesta:

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedpermissions=p  
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==   
signedversion=2015-02-21  
  
StringToSign = p + \n   
               2015-07-01T08:49Z + \n  
               2015-07-02T08:49Z + \n  
               queue/myaccount/myqueue + \n  
               YWJjZGVmZw== + \n  
               2015-02-21  
  
GET https://myaccount.queue.core.windows.net/myqueue/messages?visibilitytimeout=120&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=p&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1  
Host: myaccount.queue.core.windows.net  
  

Esempio: aggiungere un messaggio utilizzando una firma di accesso condiviso

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per aggiungere un messaggio a una coda. Questa firma garantisce l'aggiunta di permessi per la coda. Infine, in questo esempio viene utilizzata la firma per aggiungere un messaggio.

Esaminare i campi di firma firmati seguenti, la costruzione della stringa StringToSign e la costruzione dell'URL che chiama l'operazione Put Message dopo l'autorizzazione della richiesta:

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedpermissions=a  
signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21  
  
StringToSign = a + \n
               2015-07-01T08:49Z + \n  
               2015-07-02T08:49Z + \n  
               queue/myaccount/myqueue + \n  
               YWJjZGVmZw== + \n  
               2015-02-21  
  
POST https://myaccount.queue.core.windows.net/myqueue/messages?visibilitytimeout=120&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=a&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1  
Host: myaccount.queue.core.windows.net  
Content-Length: 100  
  
<QueueMessage>  
<MessageText>PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg==</MessageText>  
</QueueMessage>  
  

Esempio: visualizzazione dei messaggi e ricezione di un messaggio utilizzando una firma di accesso condiviso

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per visualizzare il messaggio successivo in una coda e per recuperare il conteggio messaggi della coda. Questa firma garantisce i permessi di accesso in lettura per la coda. Infine, in questo esempio viene utilizzata la firma di accesso condiviso per visualizzare un messaggio e quindi leggere i metadati della coda, incluso il conteggio messaggi.

Esaminare i campi di firma firmati seguenti, la costruzione della stringa da firmare e la costruzione dell'URL che chiama le operazioni Visualizza messaggi e Recupera metadati coda :

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedpermissions=r  
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21  
  
StringToSign = r + \n
               2015-07-01T08:49Z + \n  
               2015-07-02T08:49Z + \n  
               queue/myacccount/myqueue + \n  
               YWJjZGVmZw== + \n  
               2015-02-21  
  
GET https://myaccount.queue.core.windows.net/myqueue/messages?peekonly=true&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1  
Host: myaccount.queue.core.windows.net  
  
GET https://myaccount.queue.core.windows.net/myqueue?comp=metadata&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-01T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1  
Host: myaccount.queue.core.windows.net  
  

Esempi di tabelle

In questa sezione sono disponibili esempi che illustrano le firme di accesso condiviso per le operazioni REST sulle tabelle. In questi esempi, l'operazione del servizio tabelle viene eseguita solo se sono stati soddisfatti i seguenti criteri:

  • La richiesta è stata autorizzata correttamente.

  • La richiesta viene eseguita nell'intervallo di tempo specificato dalla firma di accesso condiviso.

  • La richiesta non viola alcun termine di criteri di accesso archiviati associati.

  • La coda specificata dalla richiesta è la stessa coda autorizzata dalla firma di accesso condiviso.

Esempio: eseguire una query su una tabella utilizzando una firma di accesso condiviso

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per eseguire query sulle entità in una tabella. La firma garantisce i permessi di query per un intervallo specifico nella tabella. Infine, in questo esempio viene utilizzata la firma di accesso condiviso per eseguire query sulle entità incluse nell'intervallo.

Esaminare i seguenti campi di firma compilati, la creazione della stringa StringToSign e la creazione dell'URL che richiama l'operazione Query Entities. I risultati di questa operazione Query Entities includeranno solo le entità incluse nell'intervallo definito da startpk, startrk, endpk e endrk.

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedpermissions=r  
signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21  
startpk="Coho Winery"  
startrk="Auburn"  
endpk="Coho Winery"  
endrk="Seattle"  
  
String-To-Sign = r + \n
                 2015-07-01T08:49Z + \n  
                 2015-07-02T08:49Z + \n  
                 table/myaccount/mytable + \n  
                 YWJjZGVmZw==  + \n  
                 2015-02-21 + \n  
                 Coho Winery + \n  
                 Auburn + \n  
                 Coho Winery + \n  
                 Seattle  
  
GET https://myaccount.table.core.windows.net/MyTable?$filter=PartitionKey%20eq%20'Coho%20Winery'&sv=2015-02-21&tn=MyTable&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d&spk=Coho%20Winery&srk=Auburn&epk=Coho%20Winery&erk=Seattle HTTP/1.1  
Host: myaccount.table.core.windows.net  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  
  

Esempio: aggiornare una tabella utilizzando una firma di accesso condiviso

Nell'esempio seguente viene illustrato come creare una firma di accesso condiviso per aggiornare le entità in una tabella. La firma concede i permessi di aggiornamento per un intervallo specifico di entità. Infine, in questo esempio viene utilizzata la firma di accesso condiviso per aggiornare un'entità inclusa nell'intervallo.

Esaminare i seguenti campi di firma compilati, la creazione della stringa StringToSign e la creazione dell'URL che richiama l'operazione Update Entity. L'operazione Update Entity consente di aggiornare solo le entità incluse nell'intervallo di partizione definito da startpk e endpk.

signedstart=2015-07-01T08:49Z  
signedexpiry=2015-07-02T08:49Z  
signedpermissions=u  
signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=  
signedidentifier=YWJjZGVmZw==   
signedversion=2015-02-21  
startpk="Coho Winery"  
endpk="Coho Winery"  
  
String-To-Sign = u + \n   
                 2015-07-01T08:49Z + \n  
                 2015-07-02T08:49Z + \n  
                 table/myaccount/mytable + \n  
                 YWJjZGVmZw== + \n  
                 2015-02-21 + \n  
                 Coho Winery + \n  
                 + \n  
                 Coho Winery + \n  
  
MERGE https://myaccount.table.core.windows.net/MyTable(PartitionKey='Coho%20Winery',RowKey='Seattle')?sv=2015-02-21&tn=MyTable&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=u&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d&spk=Coho%20Winery&epk=Coho%20Winery HTTP/1.1  
Host: myaccount.table.core.windows.net  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  
If-Match: *  
Content-Type: application/atom+xml  
Content-Length: 696  
  
<?xml version="1.0" encoding="utf-8" standalone="yes"?>  
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">  
  <title />  
  <author>  
    <name />  
  </author>  
  <id>https://myaccount.table.core.windows.net/MyTable(PartitionKey='Coho Winery',RowKey='Seattle')</id>  
  <content type="application/xml">  
    <m:properties>  
      <d:PartitionKey>P</d:PartitionKey>  
      <d:RowKey>R</d:RowKey>  
      <d:Timestamp m:type="Edm.DateTime">0001-01-01T00:00:00</d:Timestamp>  
    </m:properties>  
  </content>  
</entry>  
  

Vedere anche

Delegare l'accesso con una firma di accesso condiviso
Creare un SAS di servizio