这是我第一次使用Azure Storage JS API。我已按照Microsoft tutorial的指示进行操作。 我在节点服务器上生成SAS密钥并获得了成功的结果,但我仍然收到身份验证失败错误。我使用的是Microsoft Azure提供的库。我该如何解决这个问题?
function test() {
Restangular.all('cdn/sas').post({container: 'photos'}).then(function (sas) {
var blobUri = 'https://hamsar.blob.core.windows.net';
var blobService = AzureStorage.createBlobServiceWithSas(blobUri, sas.token);
blobService.listContainersSegmented(null, function (error, results) {
if (error) {
// List container error
} else {
// Deal with container object
}
});
}, function (error) {
console.log("Error generating SAS: ", error);
});
}
错误讯息:
答案 0 :(得分:1)
根据您的错误消息,我发现您创建了一个Service SAS令牌。但是,如果要列出存储帐户中的所有容器名称。您需要使用帐户SAS令牌。
注意:您也可以使用blobService.listBlobsSegmented,您应该确保您的服务sas令牌具有列出blob文件和设置容器名称的权限。
像这样:
blobService.listBlobsSegmented('mycontainer', null, function (error, results)
如果您要列出所有容器,建议您按照这些codes生成帐户SAS。
这样的代码:
var getPolicyWithFullPermissions = function(){
var startDate = new Date();
var expiryDate = new Date();
startDate.setTime(startDate.getTime() - 1000);
expiryDate.setTime(expiryDate.getTime() + 24*60*60*1000);
var sharedAccessPolicy = {
AccessPolicy: {
Services: AccountSasConstants.Services.BLOB +
AccountSasConstants.Services.FILE +
AccountSasConstants.Services.QUEUE +
AccountSasConstants.Services.TABLE,
ResourceTypes: AccountSasConstants.Resources.SERVICE +
AccountSasConstants.Resources.CONTAINER +
AccountSasConstants.Resources.OBJECT,
Permissions: AccountSasConstants.Permissions.READ +
AccountSasConstants.Permissions.ADD +
AccountSasConstants.Permissions.CREATE +
AccountSasConstants.Permissions.UPDATE +
AccountSasConstants.Permissions.PROCESS +
AccountSasConstants.Permissions.WRITE +
AccountSasConstants.Permissions.DELETE +
AccountSasConstants.Permissions.LIST,
Protocols: AccountSasConstants.Protocols.HTTPSORHTTP,
Start: startDate,
Expiry: expiryDate
}
};
return sharedAccessPolicy;
};
var sharedAccessSignature = azure.generateAccountSharedAccessSignature(environmentAzureStorageAccount, environmentAzureStorageAccessKey, getPolicyWithFullPermissions );
然后您可以使用帐户SAS列出帐户的容器。
结果:
有关服务sas和帐户sas之间差异的更多详细信息,您可以参考此article。