我有一个 API,允许用户将文件上传到 Azure 存储容器。现在我的 API 允许文件上传,但它允许任何用户上传到他们想要的任何容器。我希望用户只能上传到他们自己的容器。
为了防止用户访问所有容器,我想到了为用户提供 SAS token 来限制容器访问。问题是我不确定如何格式化连接字符串以包含 SAS token 以及容器名称。我当前的连接字符串采用以下格式:
DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;EndpointSuffix=...
我一直在使用此资源来修复连接字符串:https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string然而,每次我尝试编辑自己的连接字符串时,它要么导致 API 返回 500 错误,要么允许我访问任何容器而不仅仅是特定于 token 的容器。我也尝试过简单地输入 SharedAccessSignature=<access key>
作为连接字符串,但它仍然不起作用。
最佳答案
简单地说,您无法为特定容器创建连接字符串。
您可以做的就是与您的客户共享容器特定的 SAS URL。您可以做的是使用 SAS URL 创建一个 BlobContainerClient
,然后上传文件。
例如,如果您使用 .Net SDK 进行 Azure Blob 存储,则代码将类似于:
var containerClient = new BlobContainerClient(sasUrl);
var blockBlobClient = containerClient.GetBlockBlobClient(blobName);
...write code to upload the blob
关于azure - 使用容器名称和 SAS token 的 Azure 存储的动态连接字符串的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76164837/