Azure SAS和许可

问题描述:

GetSaSForBlobContainer(容器,SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Read);Azure SAS和许可

public static string **GetSaSForBlobContainer**(CloudBlobContainer blobContainer, SharedAccessBlobPermissions permission) 
    { 
     var sas = blobContainer.GetSharedAccessSignature(new SharedAccessBlobPolicy() 
     { 
      Permissions = permission, 
      SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5),//SAS Start time is back by 5 minutes to take clock skewness into consideration 
      SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(15), 
     }); 
     return string.Format(CultureInfo.InvariantCulture, "{0}{1}", blobContainer.Uri, sas); 
    } 

- 当我尝试这一点,在我的stroge帐户我的容器访问private.Can我列出在Internet Explorer中的容器的斑点?我尝试用BLOB和容器的访问类型的失败总是:

AuthenticationFailed 服务器无法验证请求。确保授权标头的值正确形成,包括签名。 RequestId:2c504f81-0001-00ea-3815-be7271000000时间:2017-04-25T22:47:20.9382490Z 签名不符。串签所用的是RL 2017-04-25T22:38:15Z 2017-04-25T22:58:15Z/BLOB/onlineeducation/$根2015年12月11日

但当我尝试这个我可以看到斑点,

foreach (IListBlobItem blob in blobs) 
{ 
    CloudBlockBlob blob1 = new CloudBlockBlob(blob.Uri); 
    string name = blob1.Name; 

} 

1)我不明白一两件事,当我创建GetSaSForBlobContainer和我的容器访问类型是私人会发生什么(适用于Internet Explorer和代码)? 2)当我在未经许可的情况下获得我的私有容器的引用,然后创建blob uri + SAS。示例将会发生什么情况可以看到我的容器?或者我可以只写入引用blob(我的blob权限只写)..

3 - 会发生什么,容器uri + sas - 在Internet Explorer中尝试时可以看到容器吗?

4-)什么是这里的不同,

  • 我的容器访问类型在我储存我得到continer 没有任何PERMSSION和SAS参考私人,然后创建BLOB URI与r ead permssion和SAS

  • 集装箱ACCES类型是我的存储私人我得到容器与PERMSSION和SAS参考,然后创建BLOB URI与读PERMSSION和SAS

+1

你能否详细说明你的意思是'资源管理器'?你的意思是微软的Azure存储资源管理器或Internet Explorer(浏览器)? –

+0

是的先生,Internet Explorer我现在编辑:) –

当我试试这个,我在我的stroge帐户中访问我的容器是 private.Can我可以用Internet Explorer在容器中列出blob吗?我 与BLOB和容器访问类型尝试的失败总是

要解决这个问题,首先请加List在你的SAS许可,然后添加&restype=container&comp=list到您请求的URL。有关此问题的更多解释,请参阅此主题:Azure Shared Access Signature - Signature did not match

1)我不明白一两件事,当我创建GetSaSForBlobContainer 和我的容器访问类型是私人会发生什么(对于互联网 Explorer和代码)?

没有什么会发生,除非你做了什么:)。根据SAS中包含的权限,拥有此SAS URL的用户将能够执行某些操作。例如,如果您使用List权限创建SAS,则用户将只能列出该容器中的斑点。他们甚至无法下载blob(为此,SAS必须包含Read权限)。

2-)当我擅自引用我的私人容器, 然后创建BLOB URI + SAS.Example会发生什么,我可以看到我的 容器?或者我只能写引用的BLOB(我BLOB许可 是只写)..

不,你不能看到你的容器作为SAS是唯一的容器。再次因为您包含Read权限,您将只能读取blob内容。您将无法上传斑点。

3,会发生什么事,容器URI + SAS - 斑点URI + SAS(权限 读取)=>我只能上传文件或我可以看到容器 当尝试在Internet Explorer中。

不,具有Read权限,您无法上传文件。您甚至不能使用Read权限查看Blob列表。为此,您需要List权限。

关于#4,直到您实际使用SAS网址时才有所区别。在第一种情况下,你会得到一个错误,在第二种情况下,你将能够看到这个blob。

+0

所有你的答案对我来说都是宝贵的。我感谢你关于4# - 我的容器访问类型是私人的在我的存储 我得到continer没有任何permssion和SAS的参考, 然后使用读取Permssion和SAS创建Blob URI。 =>我明白在这里,我只能去我的blob并且因为读取权限下载它 ,但是当我尝试看到blob的容器(可下载的blob)时,我看不到容器。 (我认为它没有关系我为blob权限和SAS创建的,没有权限的容器 ,没有SAS我可以看到它。) –