2016-10-05 77 views
2

我正在使用API​​(node.js)为使用Azure移动服务的iOS应用程序生成只读共享访问签名。 API使用以下代码生成SAS ...整个存储帐户的Azure共享访问签名

var azure = require('azure-storage'); 
var blobService = azure.createBlobService(accountName, accountKey); 
var sas = blobService.generateSharedAccessSignature("containerName", null, sharedAccessPolicy); 

当我想要一个SAS访问一个容器时,这很好用。但我真的需要访问存储帐户中的所有容器。我明显可以为每个容器分别调用一次API,但这需要数百个额外的调用。

我已到处寻找解决方案,但我无法获得任何工作,我非常感谢知道是否有方法为存储帐户中的所有容器生成SAS?

回答

1

您可以构建一个帐户级SAS,你在哪里得到指定:

  • 服务,包括(BLOB,表,队列,文件)
  • 资源访问(如容器创建&删除)
  • 权限(例如读,写,列表)
  • 协议(例如仅HTTPS,HTTP VS + HTTPS)

就像服务特定的SAS一样,您可以指定到期日期(以及可选的开始日期)。

考虑到您的使用案例,您可以将您的帐户SAS定制为只需;不需要包含不必要的服务(在你的情况下,表/队列/文件)。

更具体的记录在here

+0

感谢大卫,我正在关注文档,但不断收到错误“签名不匹配。使用的字符串是_acountname \ nrl \ nb \ nsc \ n \ n2016-10-09 \ n \ n \ n2015- 04-05 \ n“_。我生成的令牌是sv = 2015-04-05&ss = b&srt = sc&sp = rl&se = 2016-10-09&sig = 7rdQIGkIwK + X01Q0YqFdFDGt8Li1SQt0u2riuSCyQZM =并且从存储帐户中的容器获取blob的url是“https:// accountname .blob.core.windows.net /容器名称/ blobname?SRT = SC&SE = 2016年10月9日和API的版本= 2015年4月5日& SP = RL&SS = b&SV = 2015年4月5日&SIG = 7rdQIGkIwK%2BX01Q0YqFdFDGt8Li1SQt0u2riuSCyQZM%3D”。你知道我做错了什么吗? – Benzene

相关问题