验证 Azure 静态 Web 应用程序时出现 404 错误

Abh*_*oor 5 azure azure-static-web-app

我在 Azure 中创建了一个静态 Web 应用程序。这只是一个只有 HTML 页面的普通网站。我能够部署和访问该应用程序。

问题是当我尝试将 Azure Active Directory 与此服务集成时。我的 staticwebapp.config.json 如下。

{
  "routes":[
    {
      "route": "/login",
      "rewrite": "/.auth/login/aad"
    },
    {
        "route": "/*",
        "allowedRoles": ["authenticated"]
    }
  ],
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<tenant id removed>",
          "clientIdSettingName": "<client id value>",
          "clientSecretSettingName": "<client secret value>"
        }
      }
    }
  },
  "responseOverrides": {
    "401": {
      "redirect": "/login",
      "statusCode": 302
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

此后,当我尝试访问任何页面时,它会被重定向到 /login 并收到 404 页面。我预计它会转到天蓝色身份验证页面(由于重定向规则)。是否还需要进行任何其他配置来验证静态 Web 应用程序?

tim*_*mur 8

这里需要仔细检查的一件事是clientIdSettingNameclientSecretSettingName字段。

这些不是实际值,而是对SWA 设置的引用。这样做的原因是为了确保没有纯文本机密被提交给源代码管理。

因此,给定字面值

"clientIdSettingName": "AZURE_CLIENT_ID",
"clientSecretSettingName": "AZURE_CLIENT_SECRET"
Run Code Online (Sandbox Code Playgroud)

Azure 门户应该设置如下: 显示 SWA 配置参数名称的 Azure 门户

文档清楚地提到了此步骤,但在前几次通读时我错过了此设置的参考性质。最终,变量名暴露了这一点。