【问题标题】:Protect routes for static website hosted in Azure Storage Account保护 Azure 存储帐户中托管的静态网站的路由
【发布时间】:2022-01-02 15:37:11
【问题描述】:

我目前正在使用 Azure 静态 Web 应用来托管我的静态网站和 API。但是该服务有一些限制,所以我决定从静态 Web 应用迁移出去。

在 SWA 的静态网站托管中,您可以像这样在 staticwebapp.config.json 中定义 protected routes

{
    "routes": [
        {
            "route": "/admin/*",
            "allowedRoles": ["administrator"]
        }
    ]
}
  • 如果用户未登录,它将返回401 Unauthorized
  • 如果用户已登录但不属于administrator 角色,它将返回403 Forbidden

我喜欢这个功能,但是当我离开 SWA 时,我想知道如果我使用 Azure 存储帐户部署我的网站,如何实现这个功能?

我查看了具有 rules engine 的 Azure CDN,但不确定它是否可配置用于检查身份验证,是否有更好的选择,因为每个附加规则都会产生成本。

附带问题 - 还是我应该只保护客户端的路由?

【问题讨论】:

    标签: azure azure-storage azure-cdn


    【解决方案1】:

    关于解决方法您可以在 blob 存储中使用 SAS。

    Azure 存储帐户上托管的静态网站是完全公开的。目前,我们无法做到更多。

    您可以将静态网站作为具有私有访问权限的容器中的 blob 托管,然后使用 SAS 访问它们。 A shared access signature (SAS)

    • 您可以将静态网站中的 blob 保留为私有访问(仅限 blob 所有者可以使用存储帐户密钥访问)

    • 然后您可以使用简单的服务来验证和授权您的 客户端(如果有很多)并为它们生成 SAS 令牌以访问 blob (网页)。该服务还可以为他们更新令牌。

    • 如果人数有限,您可以生成 SAS 并简单地 与客户分享链接。

    您可以在 blob(网页)的粒度上执行此操作,以便您可以授权某些人阅读某些页面,而他们不能阅读其他人

    您可以尝试通过 SAS 令牌配置 CDN 端点以访问私有 Blob 容器(不要使用静态网站功能,因为该端点是完全公开的)。 Azure CDN 原生支持此方案——在最坏的情况下,您可以编写重写规则以将请求重定向到带有 SAS 令牌的 Blob 终结点。 Using Azure CDN with SAS

    有关详细信息,请参阅此文档:

    1. Azure-storage static website access permissions

    2. https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website#custom-domain-names

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2019-09-19
      • 2020-12-23
      • 2021-05-05
      • 2013-12-01
      • 1970-01-01
      • 2021-08-06
      相关资源
      最近更新 更多