Продажи: 1-800-867-1389

Примеры подписей общего доступа

Обновлено: Ноябрь 2014 г.

В этом разделе приведены образцы использования подписанных URL-адресов с API REST. Подписанные URL-адреса позволяют предоставлять права доступа к контейнерам и большим двоичным объектам, таблицам и очередям. С помощью подписанного URL-адреса можно предоставить пользователям ограниченный доступ к конкретному диапазону контейнеров, больших двоичных объектов, очередей, таблиц либо сущностей таблиц на указанный период времени. Полное описание построения, анализа и использования подписанных URL-адресов см. в разделе Делегирование доступа с подписью коллективного доступа. Сведения об использовании клиентской библиотеки хранилища .NET для создания подписанных URL-адресов см. в разделе Создание и использование подписи общего доступа.

В этом разделе приведены примеры, демонстрирующие использование подписанных URL-адресов для операций REST с большими двоичными объектами.

Версии до 2013-08-15

В следующем примере показано, как создать подписанный URL-адрес с целью предоставления к контейнеру доступа только для чтения.

Поля подписи, из которых будет состоять URL-адрес:

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

Подпись составляется следующим образом.

 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= 

URL-адрес запроса задает разрешения на чтение для контейнера изображений на указанный интервал. Обратите внимание, что ресурсом, представленным URL-адресом запроса, является большой двоичный объект, однако подписанный URL-адрес указан для контейнера. Также можно указать ее для самого большого двоичного объекта.

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 

Версия 2013-08-15 или более поздняя

В следующем примере показано, как создавать подписанные URL-адреса для доступа к контейнеру с разрешением только на чтение с помощью версии 2013-08-15 служб хранилища.

Версия 2013-08-15 предоставляет новые параметры запроса, позволяющие клиентам выдавать запросы с целью переопределения заголовков ответа только для этого подписанного URL-адреса.

Заголовки ответа и соответствующие параметры запроса являются следующими:

 

Имя заголовка ответа Соответствующий параметр запроса SAS

Cache-Control

rscc

Content-Disposition

rscd

Content-Encoding

rsce

Content-Language

rscl

Content-Type

rsct

Поля, которые составляют подписываемую строку для подписи:

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

Подписываемая строка строится следующим образом.

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=

Подписанный URL-адрес задает разрешения на чтение для контейнера изображений на указанный интервал. Обратите внимание, что ресурсом, представленным URL-адресом запроса, является большой двоичный объект, однако подписанный URL-адрес указан для контейнера. Также можно указать ее для самого большого двоичного объекта.

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

Для клиента, который делает запрос с этими подписями, операция Получение большого двоичного объекта будет выполнена при соблюдении следующих условий.

  • Подпись из запроса успешно пройдет проверку подлинности в учетной записи хранилища.

  • Запрос сделан в период времени, который задан подписанным URL-адресом.

  • Запрос не нарушает условия соответствующей политики доступа.

  • Большой двоичный объект, указанный в запросе (/myaccount/pictures/profile.jpg), хранится в контейнере, который задан, как подписанный ресурс (/myaccount/pictures).

Обратите внимание, что при указании rsct=binary и rscd=file; attachment в подписанном URL-адресе заголовки ответа content-type и content-disposition соответственно будут переопределены.

Успешный ответ на запрос, созданный с использованием этого подписанного URL-адреса, будет иметь примерно такой вид:

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

В следующем примере показано, как создавать подписанный URL-адрес для записи большого двоичного объекта. В этом примере мы создаем подпись, которая предоставляет разрешения на запись для всех больших двоичных объектов в контейнере. Затем мы используем этот подписанный URL-адрес для записи в находящийся в контейнере большой двоичный объект.

Поля подписи, из которых будет состоять URL-адрес:

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

Подпись составляется следующим образом.

 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= 

URL-адрес запроса задает разрешения на запись для контейнера изображений на указанный интервал. Обратите внимание, что ресурсом, представленным URL-адресом запроса, является большой двоичный объект, однако подписанный URL-адрес указан для контейнера. Также можно указать ее для самого большого двоичного объекта.

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. 

При наличии этой подписи операция Put BLOB будет вызываться при соблюдении следующих условий.

  • Подпись из запроса успешно пройдет проверку подлинности в учетной записи хранилища.

  • Запрос сделан в период времени, который задан подписанным URL-адресом.

  • Запрос не нарушает условия соответствующей политики доступа.

  • Указанный запросом большой двоичный объект (/myaccount/pictures/фотографий.jpg) находится в контейнере, указанном в качестве подписанного ресурса (/myaccount/pictures).

В следующем примере показано, как создать подписанный URL-адрес для предоставления разрешений на удаление для большого двоичного объекта и удалить большой двоичный объект.

Обратите внимание, что подписанный URL-адрес для операции DELETE следует распространять продуманно, поскольку предоставление клиенту разрешения удалять данные может иметь непредвиденные последствия.

Поля подписи, из которых будет состоять URL-адрес:

 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 

Подпись составляется следующим образом.

 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= 

URL-адрес запроса задает разрешения на удаление для контейнера изображений на указанный интервал. Обратите внимание, что ресурсом, представленным URL-адресом запроса, является большой двоичный объект, а подписанный URL-адрес указан для этого большого двоичного объекта. Ее также можно указать для контейнера большого двоичного объекта. В этом случае будет предоставлено разрешение на удаление любого большого двоичного объекта из этого контейнера.

 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  

При наличии этой подписи операция Delete BLOB будет вызываться при соблюдении следующих условий.

  • Подпись из запроса успешно пройдет проверку подлинности в учетной записи хранилища.

  • Запрос сделан в период времени, который задан подписанным URL-адресом.

  • Запрос не нарушает условия соответствующей политики доступа.

  • Указанный запросом большой двоичный объект (/myaccount/pictures/profile.jpg) соответствует большому двоичному объекту, заданному в качестве подписанного ресурса.

В этом разделе приведены примеры, демонстрирующие использование подписанных URL-адресов для операций REST с очередями. В следующих примерах операция службы очередей выполняется только после выполнения следующих условий.

  • Подпись из запроса успешно пройдет проверку подлинности в учетной записи хранилища.

  • Запрос сделан в период времени, который задан подписанным URL-адресом.

  • Запрос не нарушает условия соответствующей политики доступа.

  • Очередью, указанной запросом, является та же очередь, доступ к которой разрешен подписанным URL-адресом.

В следующем примере показано, как создавать подписанный URL-адрес для получения сообщений из очереди. Эта подпись предоставляет разрешения на обработку сообщений для очереди. И наконец, в этом примере с помощью подписанного URL-адреса производится получение сообщения из очереди.

Ознакомьтесь с приведенными далее подписанными полями, которые представляют конструкцию строки StringToSign и конструкцию URL-адреса, вызывающего операцию Get Message после того, как будет выполнена проверка подлинности подписанного URL-адреса.

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 

В следующем примере показано, как создавать подписанный URL-адрес для добавления сообщений в очередь. Эта подпись предоставляет разрешения на добавление для очереди. И наконец, в этом примере с помощью подписи выполняется добавление сообщения.

Ознакомьтесь с приведенными далее подписанными полями, которые представляют конструкцию строки StringToSign и конструкцию URL-адреса, вызывающего операцию Put Message после того, как будет выполнена проверка подлинности подписанного URL-адреса.

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> 

В следующем примере показано, как создавать подписанный URL-адрес для выбора следующего сообщения из очереди и получения количества сообщений в очереди. Эта подпись предоставляет разрешения на чтение для очереди. И наконец, в этом примере с помощью подписанного URL-адреса производится выбор сообщения и чтение метаданных очередей, в которых указано число сообщений.

Ознакомьтесь с приведенными ниже подписанными полями, составляющими конструкцию строки StringToSign и конструкцию URL-адреса, вызывающего операции Peek Messages и 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 

В этом разделе приведены примеры, демонстрирующие использование подписанных URL-адресов для операций REST с таблицами. В следующих примерах операция службы таблиц выполняется только после выполнения следующих условий.

  • Подпись из запроса успешно пройдет проверку подлинности в учетной записи хранилища.

  • Запрос сделан в период времени, который задан подписанным URL-адресом.

  • Запрос не нарушает условия соответствующей политики доступа.

  • Очередью, указанной запросом, является та же очередь, доступ к которой разрешен подписанным URL-адресом.

В следующем примере показано, как создать подписанный URL-адрес для запросов сущностей из таблицы. Подпись предоставляет разрешения на выполнение запросов к заданному диапазону из таблицы. И наконец, в этом примере подписанный URL-адрес используется для запроса сущностей из диапазона.

Ознакомьтесь с приведенными ниже подписанными полями, которые составляют конструкцию строки StringToSign и конструкцию URL-адреса, вызывающего операцию Query Entities. Результаты этой операции Query Entities будут содержать только сущности из диапазона, определенного параметрами startpk, startrk, endpk и 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  

В следующем примере показано, как создать подписанный URL-адрес для обновления сущностей из таблицы. Подпись предоставляет разрешения на обновления для определенного диапазона сущностей. И наконец, в этом примере подписанный URL-адрес используется для обновления сущностей из этого диапазона.

Ознакомьтесь с приведенными ниже подписанными полями, которые составляют конструкцию строки StringToSign и конструкцию URL-адреса, вызывающего операцию Update Entity. Операция Update Entity может обновлять только сущности, находящиеся в диапазоне, который задан параметрами startpk и 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> 

Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв
Показ:
© 2015 Microsoft