0
這裏是描述如何Constructing a Service SAS的文檔。我可以在爲我的天藍色存儲帳戶生成共享訪問簽名(SAS)時指定隊列名稱
該文件說,您可以指定一個表名,以便sas只能訪問該特定的表。
我可以用隊列做同樣的事情,所以sas只能訪問特定的隊列嗎?
這裏是描述如何Constructing a Service SAS的文檔。我可以在爲我的天藍色存儲帳戶生成共享訪問簽名(SAS)時指定隊列名稱
該文件說,您可以指定一個表名,以便sas只能訪問該特定的表。
我可以用隊列做同樣的事情,所以sas只能訪問特定的隊列嗎?
我可以用隊列做同樣的事情,所以sas只能訪問那個 特定隊列嗎?
當然可以!看看下面的代碼:
static void GenerateSasForQueue()
{
var cred = new StorageCredentials(accountName, accountKey);
var account = new CloudStorageAccount(cred, true);
var client = account.CreateCloudQueueClient();
var queue = client.GetQueueReference("queue-name");
var sasPolicy = new SharedAccessQueuePolicy()
{
SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-15),
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
Permissions = SharedAccessQueuePermissions.Add | SharedAccessQueuePermissions.Read |
SharedAccessQueuePermissions.Update | SharedAccessQueuePermissions.ProcessMessages
};
var sasToken = queue.GetSharedAccessSignature(sasPolicy);
var sasUrl = string.Format("{0}{1}", queue.Uri.AbsoluteUri, sasToken);
}
該代碼會產生在你的存儲賬戶名爲queue-name
與有效期爲自SAS創建之日起小時內所有權限隊列中的SAS令牌。
我試圖該代碼時,它產生一個SAS這樣的: SV = 2015年12月11日&SIG = XGU%2BzyaZtNOAL339OgzOsTMav5ULcxeuI0Q1jrLRxG0%3D&ST = 2017-06-02T17%3A03%3A58Z&SE = 2017-06-02T19%3A18%3A58Z& SP? = raup 在這個sas中,我看不到任何顯示隊列名的地方,如果我用這個sas訪問另一個隊列,會被拒絕嗎? – liuhongbo
只是一個測試,是的,它的工作原理。那麼這是如何工作的?隊列名稱在簽名的一側?我的想法是sas真的是在客戶端創建的,必須在某處指定隊列名稱。 – liuhongbo
'隊列名稱在簽名的一側?' - 這是正確的。計算簽名時,它使用隊列名稱。 –