銷售: 1-800-867-1380

共用存取簽章的範例

更新日期: 2014年11月

本主題透過 REST API 示範共用存取簽章的使用範例。共用存取簽章可允許您提供容器和 Blob、資料表以及佇列的存取權限。您可以提供共用存取簽章,即可在指定時段內,授與使用者對特定容器、Blob、佇列、資料表或資料表實體範圍的有限存取權。如需建構、解析及使用共用存取簽章的詳細資料,請參閱<以共用存取簽章委派存取>。如需使用 .NET 儲存體用戶端程式庫建立共用存取簽章的資訊,請參閱<建立及使用共用存取簽章>。

本節包含的範例示範 Blob 上 REST 作業的共用存取簽章。

2013-08-15 版之前的版本

下列範例示範如何建構共用存取簽章,以取得容器的讀取存取權。

將組成 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 會針對指定的間隔指定 pictures 容器的讀取權限。請注意,要求 URL 表示的資源是 Blob,但共用存取簽章指定於容器上。也可能在 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: Mon, Wed, 23 Oct 2013 17:28:12 GMT 

2013-08-15 版和更新的版本

下列範例使用 2013-08-15 版的儲存體服務,示範如何建構共用存取簽章,以取得容器的讀取存取權。

2013-08-15 版導入新的查詢參數,可讓用戶端發出要求,僅針對此共用存取簽章覆寫回應標頭。

回應標頭及對應的查詢參數如下:

 

回應標頭名稱 對應的 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=

共用存取簽章會針對指定的間隔指定 pictures 容器的讀取權限。請注意,要求 URL 表示的資源是 Blob,但共用存取簽章指定於容器上。也可能在 Blob 本身加以指定。

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

利用此簽章提出要求的用戶端若符合下列準則,將會執行 取得 Blob (REST 應用程式開發介面) 作業:

  • 要求中的簽章成功對儲存體帳戶進行驗證。

  • 在共用存取簽章指定的時間範圍中提出要求。

  • 此要求沒有違反任何相關預存的存取原則條款。

  • 要求所指定的 Blob (/myaccount/pictures/profile.jpg) 位於指定為簽署資源的容器內 (/myaccount/pictures)。

請注意,在共用存取簽章上指定 rsct=binaryrscd=file; attachment 會分別覆寫回應中的內容類型和內容配置標頭。

使用此共用存取簽章所提出之要求的成功回應與下列相似:

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

下列範例示範如何建構共用存取簽章,以寫入 Blob。在此範例中,我們會建構簽章,授與容器中的所有 Blob 寫入權限。然後我們會使用共用存取簽章寫入容器中的 Blob。

將組成 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 會針對指定的間隔指定 pictures 容器的寫入權限。請注意,要求 URL 表示的資源是 Blob,但共用存取簽章指定於容器上。也可能在 Blob 本身加以指定。

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:

  • 要求中的簽章成功對儲存體帳戶進行驗證。

  • 在共用存取簽章指定的時間範圍中提出要求。

  • 此要求沒有違反任何相關預存的存取原則條款。

  • 要求所指定的 blob (/myaccount/pictures/profile.jpg) 位於指定為簽署資源的容器內 (/myaccount/pictures)。

下列範例示範如何建構共用存取簽章,授與 Blob 刪除權限,並刪除 Blob。

請注意,應明智散發 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 會針對指定的間隔指定 pictures 容器的刪除權限。請注意,要求 URL 表示的資源是 Blob,且共用存取簽章是指定於 Blob 上。在 Blob 的容器上加以指定,以授與刪除容器中所有 Blob 的權限,也是可行的。

 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:

  • 要求中的簽章成功對儲存體帳戶進行驗證。

  • 在共用存取簽章指定的時間範圍中提出要求。

  • 此要求沒有違反任何相關預存的存取原則條款。

  • 要求所指定的 Blob (/myaccount/pictures/profile.jpg) 符合指定為簽署資源的 Blob。

本節包含的範例示範佇列上 REST 作業的共用存取簽章。在這些範例中,佇列服務作業僅在符合下列準則後執行:

  • 要求中的簽章成功對儲存體帳戶進行驗證。

  • 在共用存取簽章指定的時間範圍中提出要求。

  • 此要求沒有違反任何相關預存的存取原則條款。

  • 要求所指定的佇列是共用存取簽章驗證的相同佇列。

下列範例示範如何建構共用存取簽章,以從佇列擷取訊息。此簽章會授與佇列訊息的處理權限。最後,此範例會使用共用存取簽章,從佇列擷取訊息。

檢查下列簽署簽章欄位、StringToSign 字串的建構,以及在共用存取簽章驗證之後呼叫 Get Messages 作業的 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 

下列範例示範如何建構共用存取簽章,以新增訊息到佇列。此簽章會授與佇列新增權限。最後,此範例會使用簽章新增訊息。

檢查下列簽署簽章欄位、StringToSign 字串的建構,以及在共用存取簽章驗證之後呼叫 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> 

下列範例會示範如何建構共用存取簽章,以查看佇列中的下則訊息以及擷取佇列中的訊息計數。此簽章會授與佇列讀取權限。最後,此範例會使用共用存取簽章,以查看訊息然後讀取佇列中繼資料,包括訊息計數。

檢查下列簽署簽章欄位、StringToSign 字串的建構,以及呼叫 Peek Messages and Get Queue Metadata 作業的 URL 建構:

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 

本節包含的範例示範資料表上 REST 作業的共用存取簽章。在這些範例中,表格服務作業僅在符合下列準則後執行:

  • 要求中的簽章成功對儲存體帳戶進行驗證。

  • 在共用存取簽章指定的時間範圍中提出要求。

  • 此要求沒有違反任何相關預存的存取原則條款。

  • 要求所指定的佇列是共用存取簽章驗證的相同佇列。

下列範例示範如何建構共用存取簽章,以查詢資料表中的實體。簽章會將查詢權限授與資料表中的特定範圍。最後,此範例會使用共用存取簽章,以查詢範圍中的實體。

檢查下列簽署簽章欄位、StringToSign 字串的建構,以及呼叫 Query Entities 作業的 URL 建構。此 Query Entities 作業的結果僅會包含 startpkstartrkendpkendrk 定義之範圍中的實體。

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  

下列範例示範如何建構共用存取簽章,以更新資料表中的實體。簽章會將更新權限授與特定實體範圍。最後,此範例會使用共用存取簽章以更新範圍中的實體。

檢查下列簽署簽章欄位、StringToSign 字串的建構,以及呼叫 Update Entity 作業的 URL 建構。Update Entity 作業只能更新 startpkendpk 所定義之資料分割範圍內的實體。

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