首页 > 解决方案 > 如何:密码保护 Azure 应用服务

问题描述

我有一个托管在 Azure 应用服务中的网站。天蓝色是否有任何选项,以便我可以在网站上输入密码。理想情况下不更改网站代码。

只是一个基本的密码或用户名和密码,不需要是谷歌或Facebook登录或AD登录。

这是一个基于 .net 的网站,我已经看到了一些选项来执行此操作,但这意味着我必须以某种方式更改网站的代码。

当然,使用所有复杂的云技术,我可以进入门户并在服务器级别设置密码吗?- 或者是对应用程序进行某种更改的唯一方法?

标签: azureazure-devopsazure-web-app-serviceazureportal

解决方案


可以使用applicationHost.xdt中的一些设置为 Azure Web Apps 启用基本身份验证。您可以在 Web 应用程序启动时在此文件中加载一些模块。

脚步:

  • 在 Azure 门户中导航到您的 WebApp
  • 在左侧菜单中,搜索标题Development Tools并选择Advanced Tools (Kudu)
  • 使用调试控制台 > CMD工具导航到 WebApp 目录:\home\site
  • 创建一个名为:applicationHost.xdt的文件
  • 粘贴以下内容:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location path="%XDT_SITENAME%" xdt:Locator="Match(path)">
    <system.webServer>
      <rewrite xdt:Transform="InsertIfMissing">
        <allowedServerVariables xdt:Transform="InsertIfMissing">
          <add name="RESPONSE_WWW_AUTHENTICATE" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
        </allowedServerVariables>
        <rules xdt:Transform="InsertIfMissing">
          <rule name="BasicAuthentication" stopProcessing="true" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)">
            <match url=".*" />
            <conditions>
              <add input="{HTTP_AUTHORIZATION}" pattern="^Basic dXNlcjpwYXNzd29yZA==" ignoreCase="false" negate="true" />
            </conditions>
            <action type="CustomResponse" statusCode="401" statusReason="Unauthorized" statusDescription="Unauthorized" />
            <serverVariables>
              <set name="RESPONSE_WWW_AUTHENTICATE" value="Basic realm=Project" />
            </serverVariables>
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
  </location>
</configuration>
  • 根据您的喜好更改基本身份验证(示例中的默认值为:用户:密码)
  • 确保不包含 web.config 重写规则,<clear />因为这会从 applicationHost.xdt 文件中删除效果
  • 保存文件并停止和启动您的 WebApp(简单的重启是不够的)

笔记:

  • 不确定这是否适用于基于 Linux 的 WebApps..
  • 您可以使用 FTP 将此步骤添加到您的部署管道中
  • 更新:我注意到在辅助 Web 应用程序插槽上使用 applicationHost.xdt 时存在问题。只有主插槽似乎工作。

PS: 从我的回答中交叉发布here。


推荐阅读