2016-10-05 74 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

相關問題