如何只为一个用户保护 blob?
我能想到三个选项:
1) 具有短期有效期的共享访问策略。- 在该到期期限内以及在每个后续页面请求的期限内,都可以从任何地方访问到 blob 的链接。
2)在用户请求和blob存储之间有一个代理,并在此处应用身份验证。- 尽管实际上在短时间内仍然存在可公开访问的 blob。
3) 我们不会将 blob 存储用于需要保护的内容。
我错过了更好的选择吗?
如何只为一个用户保护 blob?
我能想到三个选项:
1) 具有短期有效期的共享访问策略。- 在该到期期限内以及在每个后续页面请求的期限内,都可以从任何地方访问到 blob 的链接。
2)在用户请求和blob存储之间有一个代理,并在此处应用身份验证。- 尽管实际上在短时间内仍然存在可公开访问的 blob。
3) 我们不会将 blob 存储用于需要保护的内容。
我错过了更好的选择吗?
我认为您可能想要执行以下操作。
字符串 storageConnectionString ="UseDevelopmentStorage=true";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer 容器 = blobClient.GetContainerReference("mycontainer");
容器.CreateIfNotExists();
BlobContainerPermissions blobPermissions = new BlobContainerPermissions();
blobPermissions.SharedAccessPolicies.Add("mypolicy", new SharedAccessBlobPolicy()
{
SharedAccessStartTime = DateTime.UtcNow.AddHours(1),
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(11),
权限 = SharedAccessBlobPermissions.Write |
SharedAccessBlobPermissions.Read
});
blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;
容器.SetPermissions(blobPermissions);
字符串 sasToken = container.GetSharedAccessSignature(new SharedAccessBlobPolicy(), "mypolicy");
我建议你看看这篇文章 http://msdn.microsoft.com/en-us/library/windowsazure/jj721951.aspx