首页 > 解决方案 > Azure Blob 容器,无法生成令牌

问题描述

我正在开发 azure 存储,但我无法创建正确的 SAS 令牌来传递给我的前端 javascript。遵循多个教程和示例,我似乎无法获得 JS 的工作令牌。

我在这里的教程中验证我的令牌,这样我自己的 javascript 就不会妨碍我:https ://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-blob.html

我花了几个小时尝试不同的解决方案,但我生成的令牌看起来与 azure 生成的令牌非常相似。我错过了什么?

代码

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);

//Set the expiry time and permissions for the container.
//In this case no start time is specified, so the shared access signature becomes valid immediately.
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddHours(24);
sasConstraints.Permissions = SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Write;

//Generate the shared access signature on the container, setting the constraints directly on the signature.
string sasContainerToken = container.GetSharedAccessSignature(sasConstraints);

//Return the URI string for the container, including the SAS token.
return sasContainerToken;

标签: c#azureazure-blob-storage

解决方案


关于这个问题,您是否尝试过使用 JS 创建 SAS 令牌。

var azure = require('azure-storage');
var fs = require('fs');
var SasConstants = azure.Constants.AccountSasConstants;

var blobService = azure.createBlobService();

var containerName = 'containername';
var blobName = 'blobname';

var startDate = new Date('');
var expiryDate = new Date(startDate);
expiryDate.setDate(startDate.getDate() + 1);

var sharedAccessPolicy = {
  AccessPolicy: {
    Permissions: azure.BlobUtilities.SharedAccessPermissions.READ + azure.BlobUtilities.SharedAccessPermissions.ADD + azure.BlobUtilities.SharedAccessPermissions.CREATE+ azure.BlobUtilities.SharedAccessPermissions.WRITE,
    Start: startDate,
    Expiry: expiryDate
  },
};

var token = blobService.generateSharedAccessSignature(containerName, null, sharedAccessPolicy);

推荐阅读