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
, endpk
i 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