访问登录用户的 Azure Blob 存储

Access Azure Blob Storage of logged-in user

我有一个 MVC 应用程序,用户列表可以将文件上传到 GoogleDrive/DropBox,为此他们只需要验证自己,相应的 api 提供 'AccessToken' 或其他东西它进一步用于从我的网络应用程序将文件上传到用户帐户。

现在我需要对 Azure Blob 存储做同样的事情。为了进行测试,我在那里创建了一个帐户,并使用 Accountname 和 Accountkey 创建了一个连接字符串,它的作用与此相同:

public void UploadFileToBlob1(string fileName, byte[] fileData)
    {
        // Retrieve storage account from connection string.
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(System.Configuration.ConfigurationManager.AppSettings["StorageConnectionString"]);

        // Create the blob client.
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        // Retrieve reference to a previously created container.
        CloudBlobContainer container = blobClient.GetContainerReference("portalcontainer");
        container.CreateIfNotExists();

        // Retrieve reference to a blob named "myblob".
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);

        // Create or overwrite the "myblob" blob with contents from a local file.
        Stream stream = new MemoryStream(fileData);
        blockBlob.UploadFromStream(stream);
    }

现在我想让登录我的应用程序的用户也可以这样做。

因此,在 Azure blob 存储的情况下,我可以做些什么来验证 Blob 存储帐户上的登录用户并获取 'accesstoken' 或其他内容以在用户 blob 容器上执行文件 upload/download。

请指教

当前不支持用户特定的基于令牌的 Azure 存储访问。

不过,我想提出另一种方法。看看这是否有意义(这实质上是对赵兴上面评论的扩展)。

对于您的应用程序的每个用户,您要做的是创建一个 blob 容器(一种主目录)。当用户登录时,您可以为该容器创建一个具有适当权限的 Shared Access Signature (SAS)。因此,用户将能够访问该容器中的资源。因为 SAS 是为特定容器创建的,所以用户使用该 SAS 令牌访问另一个容器的任何尝试都将导致错误。