VENDITE: 1-800-867-1389

Esempi di firme di accesso condiviso

Aggiornamento: aprile 2015

In questo argomento viene illustrato un esempio in cui si utilizzano le firme di accesso condiviso con l'API REST. Con le firme di accesso condiviso è possibile concedere diritti di accesso a contenitori, Blob, tabelle e code. 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 su creazione, analisi e utilizzo di firme di accesso condiviso, vedere Delega dell'accesso con una firma di accesso condiviso. Per informazioni sull'utilizzo della libreria client di archiviazione .NET per creare firme di accesso condiviso, vedere Create and Use a Shared Access Signature.

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

Versioni precedenti alla 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= 

Tramite l'URL della richiesta vengono specificate le autorizzazioni di accesso in lettura al contenitore di immagini per l'intervallo definito. La risorsa rappresentata dall'URL della richiesta è un Blob, ma la firma di accesso condiviso viene specificata per il 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: Mon, Wed, 23 Oct 2013 17:28:12 GMT 

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-14 signedexpiry=2013-08-15 signedresource=c signedpermissions=r signature=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI= 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-14 + \n                2013-08-15 + \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 per il contenitore. È anche possibile specificarla nel Blob stesso.

GET https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2013-08-15&st=2013-08-14&se=2013-08-15&sr=c&sp=r&rscd=file;%20attachment&rsct=binary &sig=YWJjZGVmZw%3d%3d&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d HTTP/1.1 Host: myaccount.blob.core.windows.net x-ms-date: Wed, 23 Oct 2013 17:28:12 GMT

Per un client che effettua una richiesta con queste firme, l'operazione Get Blob verrà eseguita se vengono soddisfatti i seguenti criteri:

  • La firma nella richiesta è autenticata correttamente sull'account di archiviazione.

  • 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).

Se si specifica rsct=binary e rscd=file; attachment nella firma di accesso condiviso, si sostituiscono, rispettivamente, il tipo di contenuto e le intestazioni per la disposizione del contenuto 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 Date: Wed, 23 Oct 2013 17:28:22 GMT ETag: "0x8CB171DBEAD6A6B" Last-Modified: Sun, 25 Sep 2011 22:48:29 GMT x-ms-version: 2013-08-15 Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

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.

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

 signedstart=2009-02-09T08:49Z signedexpiry=2009-02-10T08:49Z signedresource=c signedpermissions=w signature= Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs= signedidentifier=YWJjZGVmZw== signedversion=2012-02-12 

La firma viene creata come indicato di seguito:

 StringToSign = w + \n                 2009-02-09T08:49Z + \n                2009-02-10T08:49Z + \n                /myaccount/pictures + \n                YWJjZGVmZw== + \n                2012-02-12  HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs= 

Tramite l'URL della richiesta vengono specificate le autorizzazioni di scrittura 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 per il contenitore. È anche possibile specificarla nel Blob stesso.

PUT https://myaccount.blob.core.windows.net/pictures/photo.jpg?sv=2012-02-12&st=2009-02-09T08%3a49Z&se=2009-02-10T08%3a49Z& sr=c&sp=w&si=YWJjZGVmZw%3d%3d&sig=Rcp6gQRfV7WDlURdVTqCa%2bqEArnfJxDgE%2bKH3TCChIs%3d HTTP/1.1 Host: myaccount.blob.core.windows.net x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT Content-Length: 12  Hello World. 

Con questa firma, l'elemento Put Blob verrà richiamato se vengono soddisfatti i seguenti criteri:

  • La firma nella richiesta è autenticata correttamente sull'account di archiviazione.

  • 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).

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.

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=2009-02-09T08:49:37.0000000Z signedexpiry=2009-02-10T08:49:37.0000000Z signedresource=b signedpermissions=d signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE= signedidentifier=YWJjZGVmZw== signedversion=2012-02-12 

La firma viene creata come indicato di seguito:

 StringToSign = d + \n                 2009-02-09T08:49:37.0000000Z + \n                2009-02-10T08:49:37.0000000Z + \n                /myaccount/pictures/profile.jpg + \n                YWJjZGVmZw==                2012-02-12  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 per tale 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=2012-02-12&st=2009-02-09T08%3a49%3a37.0000000Z&se=2009-02-10T08%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 x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT Content-Length: 0  

Con questa firma, l'elemento Delete Blob viene richiamato se vengono soddisfatti i seguenti criteri:

  • La firma nella richiesta è autenticata correttamente sull'account di archiviazione.

  • 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.

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 firma nella richiesta è autenticata correttamente sull'account di archiviazione.

  • 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.

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 seguenti campi di firma compilati, la creazione della stringa StringToSign e la creazione dell'URL che richiama l'operazione Get Messages dopo l'autenticazione della firma di accesso condiviso:

signedstart=2012-02-09T08:49Z signedexpiry=2012-02-10T08:49Z signedpermissions=p signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE= signedidentifier=YWJjZGVmZw==  signedversion=2012-02-12  StringToSign = p + \n                 2012-02-09T08:49Z + \n                2012-02-10T08:49Z + \n                /myaccount/myqueue + \n                YWJjZGVmZw== + \n                2012-02-12  GET https://myaccount.queue.core.windows.net/myqueue/messages?visibilitytimeout=120&sv=2012-02-12&st=2012-02-09T08%3a49Z&se=2012-02-10T08%3a49Z&sp=p&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1 Host: myaccount.queue.core.windows.net x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT 

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 seguenti campi di firma compilati, la creazione della stringa StringToSign e la creazione dell'URL che richiama l'operazione Put Messages dopo l'autenticazione della firma di accesso condiviso:

signedstart=2012-02-09T08:49Z signedexpiry=2012-02-10T08:49Z signedpermissions=a signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE= signedidentifier=YWJjZGVmZw==  signedversion=2012-02-12  StringToSign = a + \n                 2012-02-09T08:49Z + \n                2012-02-10T08:49Z + \n                /myaccount/myqueue + \n                YWJjZGVmZw== + \n                2012-02-12  POST https://myaccount.queue.core.windows.net/myqueue/messages?visibilitytimeout=120&sv=2012-02-12&st=2012-02-09T08%3a49Z&se=2012-02-10T08%3a49Z&sp=a&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1 Host: myaccount.queue.core.windows.net x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT Content-Length: 100  <QueueMessage> <MessageText>PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg==</MessageText> </QueueMessage> 

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 seguenti campi di firma compilati, la creazione della stringa StringToSign e la creazione dell'URL che richiama le operazioni Peek Messages e Get Queue Metadata:

signedstart=2012-02-09T08:49Z signedexpiry=2012-02-10T08:49Z signedpermissions=r signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE= signedidentifier=YWJjZGVmZw==  signedversion=2012-02-12  StringToSign = r + \n                 2012-02-09T08:49Z + \n                2012-02-10T08:49Z + \n                /myacccount/myqueue + \n                YWJjZGVmZw== + \n                2012-02-12  GET https://myaccount.queue.core.windows.net/myqueue/messages?peekonly=true&sv=2012-02-12&st=2012-02-09T08%3a49Z&se=2012-02-10T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1 Host: myaccount.queue.core.windows.net x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT  GET https://myaccount.queue.core.windows.net/myqueue?comp=metadata&sv=2012-02-12&st=2012-02-09T08%3a49Z&se=2012-02-10T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1 Host: myaccount.queue.core.windows.net x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT 

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 firma nella richiesta è autenticata correttamente sull'account di archiviazione.

  • 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.

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=2012-02-09T08:49Z signedexpiry=2012-02-10T08:49Z signedpermissions=r signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE= signedidentifier=YWJjZGVmZw==  signedversion=2012-02-12 startpk="Coho Winery" startrk="Auburn" endpk="Coho Winery" endrk="Seattle"  String-To-Sign = r + \n                   2012-02-09T08:49Z + \n                  2012-02-10T08:49Z + \n                  /myaccount/mytable + \n                  YWJjZGVmZw==  + \n                  2012-02-12 + \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=2012-02-12&tn=MyTable&st=2012-02-09T08%3a49Z&se=2012-02-10T08%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 x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx  

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=2012-02-09T08:49Z signedexpiry=2012-02-10T08:49Z signedpermissions=u signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE= signedidentifier=YWJjZGVmZw==  signedversion=2012-02-12 startpk="Coho Winery" endpk="Coho Winery"  String-To-Sign = u + \n                   2012-02-09T08:49Z + \n                  2012-02-10T08:49Z + \n                  /myaccount/mytable + \n                  YWJjZGVmZw== + \n                  2012-02-12 + \n                  Coho Winery + \n                  + \n                  Coho Winery + \n  MERGE https://myaccount.table.core.windows.net/MyTable(PartitionKey='Coho%20Winery',RowKey='Seattle')?sv=2012-02-12&tn=MyTable&st=2012-02-09T08%3a49Z&se=2012-02-10T08%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 x-ms-date: Mon, 09 Feb 2009 17:28:12 GMT DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.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>   <updated>2012-03-20T17:28:12.2758428Z</updated>   <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> 

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2015 Microsoft