Azure Blob和共享访问签名过期时遇到问题。我需要授予blob超过1小时(7天)的访问权限,所以我使用了一个命名的容器策略,但不幸的是,我似乎无法在这7天内启动新的Url。Azure Blob容器共享访问签名到期
我有以下代码来创建“默认”策略。注意:此代码,我设置过期从现在开始1分钟,使其更容易测试:
CloudStorageAccount account = new CloudStorageAccount(credentials, true);
CloudBlobClient client = new CloudBlobClient(account.BlobEndpoint, credentials);
CloudBlobContainer container = client.GetContainerReference("files");
SharedAccessPolicy sharedAccessPolicy = new SharedAccessPolicy();
sharedAccessPolicy.Permissions = SharedAccessPermissions.Read;
sharedAccessPolicy.SharedAccessStartTime = DateTime.UtcNow;
sharedAccessPolicy.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1);
BlobContainerPermissions blobContainerPermissions = new BlobContainerPermissions();
blobContainerPermissions.SharedAccessPolicies.Add("default", sharedAccessPolicy);
container.SetPermissions(blobContainerPermissions);
我然后创建一个SharedAccessSignature网址改为:
CloudStorageAccount account = new CloudStorageAccount(credentials, true);
CloudBlobClient client = new CloudBlobClient(account.BlobEndpoint, credentials);
CloudBlobContainer container = client.GetContainerReference("files");
CloudBlob blob = container.GetBlobReference(path);
string sas = blob.GetSharedAccessSignature(new SharedAccessPolicy(), "default");
Console.WriteLine(blob.Uri.AbsoluteUri + sas);
这生成一个url,并在下一分钟(或真正的代码7天)正常工作。一分钟结束后,该网址无效并且不再按预期工作。
但是,一旦到期已过,我再次运行代码来生成一个新的url。不幸的是,它会生成相同的网址,但仍然无效。
是集装箱政策开始/结束时间是绝对的,这意味着,当我设置的政策现在:
sharedAccessPolicy.SharedAccessStartTime = DateTime.UtcNow;
sharedAccessPolicy.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1);
任何使用政策只是从上午10:10(美国东部时间)有效的上午10点11分( EDT)今天?
因此,容器策略的开始/结束时间是绝对的。我也认为他们是相对的。 – nmit026 2017-11-13 04:23:43