azure - 如何:密码保护 Azure 应用服务
问题描述
我有一个托管在 Azure 应用服务中的网站。天蓝色是否有任何选项,以便我可以在网站上输入密码。理想情况下不更改网站代码。
只是一个基本的密码或用户名和密码,不需要是谷歌或Facebook登录或AD登录。
这是一个基于 .net 的网站,我已经看到了一些选项来执行此操作,但这意味着我必须以某种方式更改网站的代码。
当然,使用所有复杂的云技术,我可以进入门户并在服务器级别设置密码吗?- 或者是对应用程序进行某种更改的唯一方法?
解决方案
可以使用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。
推荐阅读
- angular - 如何在角度中使用单个组件作为页面和 MatDialog
- oracle - Result of the V$tablespace is confusing-
- magento2 - Magento2 - 如何使用 graphql 下订单?
- node.js - 如何从路由器发送数据到快递车把模板
- javascript - 打字稿自定义组件函数参数抛出警告
- string - 你可以在 Scala 字符串插值中打印 $ 吗?
- python - 计算 pandas 列中指定值范围的平均值并存储为另一列
- postgresql - MSSQL 到 POSTGRES 的转换
- tfs - 如何处理 TFS scrum 模板中的风险
- javascript - 在角度中使用 debounceTime