Udostępnij za pośrednictwem


Przykłady sygnatury dostępu współdzielonego usługi

W tym temacie przedstawiono przykładowe zastosowania sygnatur dostępu współdzielonego z interfejsem API REST. Sygnatury dostępu współdzielonego umożliwiają zapewnienie praw dostępu do kontenerów i obiektów blob, tabel, kolejek lub plików. Udostępniając sygnaturę dostępu współdzielonego, można udzielić użytkownikom ograniczonego dostępu do określonego kontenera, obiektu blob, kolejki, tabeli lub zakresu jednostek tabeli przez określony okres. Aby uzyskać szczegółowe informacje na temat konstruowania, analizowania i używania sygnatur dostępu współdzielonego, zobacz Delegowanie dostępu za pomocą sygnatury dostępu współdzielonego. Aby uzyskać informacje na temat tworzenia sygnatur dostępu współdzielonego przy użyciu biblioteki klienta magazynu platformy .NET, zobacz Tworzenie i używanie sygnatury dostępu współdzielonego.

Przykłady obiektów blob

Ta sekcja zawiera przykłady demonstrujące sygnatury dostępu współdzielonego dla operacji REST w obiektach blob.

Przykład: pobieranie obiektu blob przy użyciu sygnatury dostępu współdzielonego kontenera

Wersje wcześniejsze niż 2013-08-15

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby dostępu do odczytu w kontenerze.

Pola podpisanego podpisu, które będą składać się z adresu URL, obejmują:

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

Podpis jest skonstruowany w następujący sposób:

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=  

Adres URL żądania określa uprawnienia do odczytu w kontenerze pictures dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest obiektem blob, ale sygnatura dostępu współdzielonego jest określona w kontenerze. Istnieje również możliwość określenia go w samym obiekcie blob.

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>  
  

Wersja 2013-08-15 i nowsza

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby dostępu do odczytu w kontenerze przy użyciu wersji 2013-08-15 usług magazynu.

W wersji 2013-08-15 wprowadzono nowe parametry zapytania, które umożliwiają klientowi wystawiające żądanie zastąpienia nagłówków odpowiedzi tylko dla tego sygnatury dostępu współdzielonego.

Nagłówki odpowiedzi i odpowiednie parametry zapytania są następujące:

Nazwa nagłówka odpowiedzi Odpowiadający parametr zapytania sygnatury dostępu współdzielonego
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Pola, które składają się na znak ciągu dla podpisu, obejmują:

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  

Znak do ciągu jest skonstruowany w następujący sposób:

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=  

Sygnatura dostępu współdzielonego określa uprawnienia do odczytu w kontenerze obrazów dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest obiektem blob, ale sygnatura dostępu współdzielonego jest określona w kontenerze. Istnieje również możliwość określenia go w samym obiekcie blob.

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  
  

W przypadku klienta wysyłającego żądanie z tym podpisem operacja Get Blob zostanie wykonana, jeśli spełnione są następujące kryteria:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zasad dostępu przechowywanych.

  • Obiekt blob określony przez żądanie (/myaccount/pictures/profile.jpg) znajduje się w kontenerze określonym jako podpisany zasób (/myaccount/pictures).

Określanie rsct=binary i rscd=file; attachment na sygnaturze dostępu współdzielonego zastępuje odpowiednio nagłówki content-type i content-disposition w odpowiedzi.

Pomyślna odpowiedź na żądanie wykonane przy użyciu tego sygnatury dostępu współdzielonego będzie podobna do następującej:

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  

Przykład: przekazywanie obiektu blob przy użyciu sygnatury dostępu współdzielonego kontenera

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego do pisania obiektu blob. W tym przykładzie utworzymy podpis, który przyznaje uprawnienia do zapisu dla wszystkich obiektów blob w kontenerze. Następnie używamy sygnatury dostępu współdzielonego do zapisu w obiekcie blob w kontenerze.

Podpisane pola, które będą składać się z adresu URL, obejmują:

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

Podpis jest skonstruowany w następujący sposób:

  
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=  
  

Adres URL żądania określa uprawnienia do zapisu w kontenerze pictures dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest obiektem blob, ale sygnatura dostępu współdzielonego jest określona w kontenerze. Istnieje również możliwość określenia go w samym obiekcie blob.

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.  
  

Po wykonaniu tego podpisu obiekt Blob Put zostanie wywołany, jeśli zostaną spełnione następujące kryteria:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zasad dostępu przechowywanych.

  • Obiekt blob określony przez żądanie (/myaccount/pictures/photo.jpg) znajduje się w kontenerze określonym jako podpisany zasób (/myaccount/pictures).

Przykład: usuwanie obiektu blob przy użyciu sygnatury dostępu współdzielonego obiektu blob

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego, która przyznaje uprawnienia usuwania obiektu blob i usuwa obiekt blob.

Przestroga

Należy pamiętać, że sygnatura dostępu współdzielonego dla operacji DELETE powinna być dystrybuowana rozsądnie, ponieważ zezwolenie klientowi na usunięcie danych może mieć niezamierzone konsekwencje.

Pola podpisanego podpisu, które będą składać się z adresu URL, obejmują:

  
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  
  

Podpis jest skonstruowany w następujący sposób:

  
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=  
  

Adres URL żądania określa uprawnienia usuwania w kontenerze obrazów dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest obiektem blob, a sygnatura dostępu współdzielonego jest określona w tym obiekcie blob. Istnieje również możliwość określenia go w kontenerze obiektu blob w celu udzielenia uprawnień do usunięcia dowolnego obiektu blob w kontenerze.

  
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  
  

Po wykonaniu tego podpisu zostanie wywołana opcja Usuń obiekt blob , jeśli zostaną spełnione następujące kryteria:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zasad dostępu przechowywanych.

  • Obiekt blob określony przez żądanie (/myaccount/pictures/profile.jpg) jest zgodny z obiektem blob określonym jako podpisany zasób.

Przykłady plików

Ta sekcja zawiera przykłady demonstrujące sygnatury dostępu współdzielonego dla operacji REST na plikach.

Przykład: pobieranie pliku przy użyciu sygnatury dostępu współdzielonego udziału

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby dostępu do odczytu w udziale.

Kilka parametrów zapytania może umożliwić klientowi wystawiające żądanie zastąpienia nagłówków odpowiedzi dla tego sygnatury dostępu współdzielonego.

Nagłówki odpowiedzi i odpowiednie parametry zapytania są następujące:

Nazwa nagłówka odpowiedzi Odpowiadający parametr zapytania sygnatury dostępu współdzielonego
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Pola, które składają się na znak ciągu dla podpisu, obejmują:

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  

Znak do ciągu jest skonstruowany w następujący sposób:

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=  

Sygnatura dostępu współdzielonego określa uprawnienia do odczytu udziału pictures dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest plikiem, ale sygnatura dostępu współdzielonego jest określona w udziale. Istnieje również możliwość określenia go w samym pliku.

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  
  

W przypadku klienta wysyłającego żądanie z tym podpisem operacja Pobierz plik zostanie wykonana, jeśli spełnione są następujące kryteria:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zasad dostępu przechowywanych.

  • Plik określony przez żądanie (/myaccount/pictures/profile.jpg) znajduje się w udziale określonym jako podpisany zasób (/myaccount/pictures).

Określanie rsct=binary i rscd=file; attachment na sygnaturze dostępu współdzielonego zastępuje content-type odpowiednio nagłówki i content-disposition w odpowiedzi.

Pomyślna odpowiedź na żądanie wykonane przy użyciu tego sygnatury dostępu współdzielonego będzie podobna do następującej:

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  

Przykład: przekazywanie pliku przy użyciu sygnatury dostępu współdzielonego w udziale

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego do zapisywania pliku. W tym przykładzie utworzymy podpis, który przyznaje uprawnienia do zapisu dla wszystkich plików w udziale. Następnie używamy sygnatury dostępu współdzielonego do zapisu w pliku w udziale.

Pola podpisanego podpisu, które będą składać się z adresu URL, obejmują:

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

Podpis jest skonstruowany w następujący sposób:

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=  

Adres URL żądania określa uprawnienia do zapisu w kontenerze pictures dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest obiektem blob, ale sygnatura dostępu współdzielonego jest określona w kontenerze. Istnieje również możliwość określenia go w samym obiekcie blob.

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.  

Po utworzeniu tego podpisu zostanie wywołana opcja Utwórz plik , jeśli spełnione są następujące kryteria:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zapisanych zasad dostępu.

  • Plik określony przez żądanie (/myaccount/pictures/photo.jpg) znajduje się w udziale określonym jako podpisany zasób (/myaccount/pictures).

Przykład: usuwanie pliku przy użyciu sygnatury dostępu współdzielonego pliku

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego, która przyznaje uprawnienia do usuwania pliku, a następnie używa sygnatury dostępu współdzielonego do usunięcia pliku.

Przestroga

Sygnatura dostępu współdzielonego dla operacji DELETE powinna być dystrybuowana rozsądnie, ponieważ zezwolenie klientowi na usunięcie danych może mieć niezamierzone konsekwencje.

Pola podpisu podpisanego, które będą składać się z adresu URL, obejmują:

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  

Podpis jest skonstruowany w następujący sposób:

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=  

Adres URL żądania określa uprawnienia do usuwania udziału obrazów dla wyznaczonego interwału. Zasób reprezentowany przez adres URL żądania jest plikiem, a sygnatura dostępu współdzielonego jest określona w tym pliku. Istnieje również możliwość określenia go w udziale pliku w celu udzielenia uprawnień do usuwania dowolnego pliku w udziale.

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  

Po wykonaniu tego podpisu funkcja Usuń plik zostanie wywołana, jeśli zostaną spełnione następujące kryteria:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zapisanych zasad dostępu.

  • Plik określony przez żądanie (/myaccount/pictures/profile.jpg) jest zgodny z plikiem określonym jako podpisany zasób.

Przykłady kolejek

Ta sekcja zawiera przykłady demonstrujące sygnatury dostępu współdzielonego dla operacji REST w kolejkach. W tych przykładach operacja usługi Kolejki jest uruchamiana tylko po spełnieniu następujących kryteriów:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zapisanych zasad dostępu.

  • Kolejka określona przez żądanie jest tą samą kolejką autoryzowaną przez sygnaturę dostępu współdzielonego.

Przykład: pobieranie komunikatów przy użyciu sygnatury dostępu współdzielonego

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby pobierania komunikatów z kolejki. Ten podpis udziela uprawnień do przetwarzania komunikatów dla kolejki. Na koniec w tym przykładzie użyto sygnatury dostępu współdzielonego do pobrania komunikatu z kolejki.

Sprawdź następujące pola podpisu podpisanego, konstrukcję ciągu do znaku i konstrukcję adresu URL, który wywołuje operację Pobieranie komunikatów po autoryzowaniu żądania:

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  
  

Przykład: dodawanie komunikatu przy użyciu sygnatury dostępu współdzielonego

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby dodawania komunikatu do kolejki. Ten podpis udziela uprawnień do dodawania do kolejki. Na koniec w tym przykładzie użyto podpisu do dodania komunikatu.

Sprawdź następujące pola podpisu podpisanego, konstrukcję ciągu StringToSign i konstrukcję adresu URL, który wywołuje operację Put Message po autoryzowanym żądaniu:

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>  
  

Przykład: Wyświetlanie komunikatów i uzyskiwanie komunikatu przy użyciu sygnatury dostępu współdzielonego

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego do wglądu w następny komunikat w kolejce i pobrać liczbę komunikatów kolejki. Ten podpis przyznaje uprawnienia do odczytu dla kolejki. Na koniec w tym przykładzie użyto sygnatury dostępu współdzielonego, aby zajrzeć do komunikatu, a następnie odczytać metadane kolejek, które zawierają liczbę komunikatów.

Sprawdź następujące pola podpisu podpisanego, konstrukcję ciągu do znaku i konstrukcję adresu URL, który wywołuje operacje Podgląd komunikatów i Pobierz metadane kolejki :

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  
  

Przykłady tabel

Ta sekcja zawiera przykłady demonstrujące sygnatury dostępu współdzielonego dla operacji REST w tabelach. W tych przykładach operacja usługi Table Service jest uruchamiana tylko po spełnieniu następujących kryteriów:

  • Żądanie zostało pomyślnie autoryzowane.

  • Żądanie jest wykonywane w przedziale czasu określonym przez sygnaturę dostępu współdzielonego.

  • Żądanie nie narusza żadnego terminu skojarzonych zapisanych zasad dostępu.

  • Kolejka określona przez żądanie jest tą samą kolejką autoryzowaną przez sygnaturę dostępu współdzielonego.

Przykład: wykonywanie zapytań względem tabeli przy użyciu sygnatury dostępu współdzielonego

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby wykonywania zapytań o jednostki w tabeli. Podpis udziela uprawnień zapytania dla określonego zakresu w tabeli. Na koniec w tym przykładzie użyto sygnatury dostępu współdzielonego do wykonywania zapytań o jednostki w zakresie.

Sprawdź następujące pola podpisu podpisanego, konstrukcję ciągu StringToSign i konstrukcję adresu URL, który wywołuje operację Jednostki zapytania. Wyniki tej operacji jednostki zapytania będą zawierać tylko jednostki w zakresie zdefiniowanym przez startpk, startrk, endpki 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  
  

Przykład: aktualizowanie tabeli przy użyciu sygnatury dostępu współdzielonego

W poniższym przykładzie pokazano, jak utworzyć sygnaturę dostępu współdzielonego na potrzeby aktualizowania jednostek w tabeli. Podpis udziela uprawnień aktualizacji dla określonego zakresu jednostek. Na koniec w tym przykładzie użyto sygnatury dostępu współdzielonego w celu zaktualizowania jednostki w zakresie.

Sprawdź następujące pola podpisu podpisanego, konstrukcję ciągu StringToSign i konstrukcję adresu URL, który wywołuje operację jednostki aktualizacji. Operacja Aktualizuj jednostkę może aktualizować tylko jednostki w zakresie partycji zdefiniowanym przez startpk elementy i 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>  
  

Zobacz też

Delegowanie dostępu za pomocą sygnatury dostępu współdzielonego
Tworzenie sygnatury dostępu współdzielonego usługi