我可以在为我的 Azure 存储帐户生成共享访问签名 (SAS) 时指定队列名称吗
can i specify a queue name when generate shared access signatures (SAS) for my azure storage account
这里是描述如何 Constructing a Service SAS.
的文档
文档说,你可以指定一个 table 名称,这样 sas 就只能访问那个特定的 table.
我可以对队列做同样的事情吗,所以 sas 只能访问那个特定的队列?
Can i do the same thing with queue, so the sas can only access that
specific queue?
当然可以!看看下面的代码:
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 创建之日起 2 小时内有效。
这里是描述如何 Constructing a Service SAS.
的文档文档说,你可以指定一个 table 名称,这样 sas 就只能访问那个特定的 table.
我可以对队列做同样的事情吗,所以 sas 只能访问那个特定的队列?
Can i do the same thing with queue, so the sas can only access that specific queue?
当然可以!看看下面的代码:
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 创建之日起 2 小时内有效。