Asp.net mvc 访问已登录用户的Azure Blob存储
我有一个MVC应用程序,其中一个用户列表可以将文件上载到GoogleDrive/DropBox,为此,他们只需要对自己进行身份验证,相应的api提供一个“AccessToken”或其他东西,进一步用于从我的web应用程序将文件上载到用户帐户 现在我需要对Azure Blob存储执行同样的操作。为了进行测试,我在那里创建了一个帐户,并使用Accountname和Accountkey创建了一个连接字符串,其作用与此相同:Asp.net mvc 访问已登录用户的Azure Blob存储,asp.net-mvc,azure,azure-storage-blobs,Asp.net Mvc,Azure,Azure Storage Blobs,我有一个MVC应用程序,其中一个用户列表可以将文件上载到GoogleDrive/DropBox,为此,他们只需要对自己进行身份验证,相应的api提供一个“AccessToken”或其他东西,进一步用于从我的web应用程序将文件上载到用户帐户 现在我需要对Azure Blob存储执行同样的操作。为了进行测试,我在那里创建了一个帐户,并使用Accountname和Accountkey创建了一个连接字符串,其作用与此相同: public void UploadFileToBlob1(string fi
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容器上执行文件上载/下载的东西
请注意当前不支持用户特定的基于令牌的Azure存储访问 然而,我想提出另一种方法。看看这是否有意义(这实质上是对上述肇星评论的延伸)
对于应用程序的每个用户,您要做的是创建一个blob容器(类似于主目录)。当用户登录时,您可以为该容器创建具有适当权限的。因此,用户将能够访问该容器中的资源。由于SAS是为特定容器创建的,因此用户使用该SAS令牌访问另一个容器的任何尝试都将导致错误。您是否调查过共享访问签名是否满足您的要求?是的,但共享访问签名也需要帐户密钥。因此,我需要使用我的帐户创建SAS,对吗?我不能访问登录的用户帐户,就像我们在谷歌驱动器的情况下可以做的那样,对吗?是的,这正是我想建议的。谢谢高拉夫