从浏览器上传文件到Azure Blob Storage,没有SAS密钥



我知道可以使用SAS键上传到Azure Blob存储。

这在react

中工作得很好
import { BlobServiceClient } from "@azure/storage-blob";
const account = env.REACT_APP_BLOB_ACCOUNT_NAME;
const sas = env.REACT_APP_BLOB_SAS;
const blobServiceClient = new BlobServiceClient(`https://${account}.blob.core.windows.net${sas}`
const containerClient = blobServiceClient.getContainerClient(container);
const blockBlobClient = containerClient.getBlockBlobClient(destination);
blockBlobClient.upload(data, data.size)

据我所知,如果允许任何用户在登录后上传东西,使用SAS密钥可能是一个安全漏洞。SAS不能依赖于用户,如果SAS密钥被嗅探,它可能会在应用程序中打开一个安全漏洞。

在Amazon中,可以通过Cognito验证用户身份和访问权限,然后直接上传到S3。如何使用Azure Blob存储和Azure AD实现这一点?

您可以参考此文档来为您的应用程序设置AAD,然后查看此文档,该文档展示了如何使用这些凭据设置BlobServiceClient。下面是一个来自Github的例子:

另一种方法是使用其余api。您可以先在Azure Active directory LINK上进行身份验证以获得令牌。在Putblob rest api调用中将其作为承载令牌传递。

最新更新