gpt4 book ai didi

azure - SAS token 中的 "se"值无效

转载 作者:行者123 更新时间:2023-12-04 04:33:24 25 4
gpt4 key购买 nike

我创建了一个 SAS token ,如果我使用以下 URL 访问私有(private)容器,该 token 似乎可以工作: https://mystorage.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-12-11&sr=c&sig=11111111111123%3D&se=2016-07-29T11%3A32%3A28Z&sp=cwl

代码:

 SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Create |
SharedAccessBlobPermissions.Write |
SharedAccessBlobPermissions.List |
SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(15)
};

var blobStorage = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobStorage.GetContainerReference(blobContainerName);

string sasContainerToken = container.GetSharedAccessSignature(policy);

但是当我在 AzCopy 中使用此 sasContainerToken (来自批处理文件)时,我收到以下错误:

[2016-07-29 14:00:38][ERROR] The syntax of the command is incorrect.
Invalid SAS token in parameter "DestSAS". Value of "se" is invalid in SAS token.

问题似乎出在时间上,它是用“%3A”转义的,将其更改为“:”可以解决该错误,但现在由于 SAS 不正确,我没有获得授权。

有什么想法吗?

更新:从 Azure 门户生成帐户 SAS 似乎解决了 AzCopy 错误,但单个 Blob 上传的访问仍然被拒绝

AzCopy 
/Source:C:\temp\myfiles
/Dest:"https://mystorage.blob.core.windows.net/mycontainer"
/DestSas:"?sv=2015-04-05&ss=bfqt&srt=sco&sp=rwdlacup&se=2016-07-30T21:11:31Z&st=2016-07-28T13:11:31Z&spr=https&sig=p%2FlCgbgMRU7lH7111111YyxEDE21rZWFo4%3D"

将/DestSas 更改为/DestKey(使用有效 key )可以,但授予了太多权限

最佳答案

您是否在 *.bat 等脚本中运行 AzCopy?

如果是这样,“se=2016-07-29T11%3A32%3A28Z”需要将“%”加倍为“se=2016-07-29T11%%3A32%%3A28Z”。这是因为“%3”在*.bat 中具有特定含义。 (您需要将 SAS 中的所有“%”加倍)

请注意,所有“%3A”不应转换回“:”,否则 SAS 将拒绝访问。

顺便说一句,您使用哪个 AzCopy 版本? SAS 问题也可能是由于 AzCopy 和生成 SAS 的客户端库之间的客户端库版本不匹配造成的。

关于azure - SAS token 中的 "se"值无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38658495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com