我有一个不允许公共访问的 Blob 存储帐户。因此,图像容器是私有的并包含图像。
应用服务运行并托管 Razor Pages Web 应用。 Web 应用程序具有系统管理的标识,并使用
DefaultAzureCredentials
来避免应用程序设置中的密钥,并且可以作为 Blob 贡献者角色访问存储帐户。
通过此配置,通过 azure b2c 进行身份验证的用户能够按照预期将文件上传到存储、列出文件、删除、读取和设置元数据等。但是,当我从
BlobClient
检索 blob(图像)Uri 并将其显示在 cshtml 文件中时,我收到 409 状态代码。
换句话说,在服务器上进行的所有操作都正常工作,但存储帐户拒绝在来自该应用程序的浏览器的 Get 请求中显示图像。对于 localhost 和生产中的 url 来说都是如此。
我相信应用程序服务有权访问数据,因此可以检索给定图像的 url,但随后是浏览器发出请求,因此被存储帐户拒绝。我想知道如何在不使用 SAS 令牌的情况下解决这个问题(它们确实有效)。换句话说,我想知道是否有可能:
xyz.azurewebsites.net
获取。
编辑:我发现了相关问题,但除了指向 SAS 令牌之外,它们已经过时且不具说服力。 SAS 的限制在于,任何获得该 URL 的人都可以读取该 URL,而不仅仅是登录用户。非常欢迎解决方案,希望自从这些问题发布在
here和here以来已经取得了一些进展。