Azure Web 应用程序 - 通过 applicationHost.xdt 添加基本身份验证?

Azure Web App - adding basic auth through applicationHost.xdt?

我有一个 Azure Web 应用程序,其中为 web.config 内的非 PROD 环境配置了基本身份验证,如下所示:

    <configSections>
            <section name="basicAuth" type="Devbridge.BasicAuthentication.Configuration.BasicAuthenticationConfigurationSection" />
        </configSections>
        <basicAuth allowRedirects="true">
            <credentials>
                <add username="username" password="password"/>
            </credentials>
        </basicAuth>
        <system.webServer>
            <modules>
              <add name="MyBasicAuthenticationModule" type="Devbridge.BasicAuthentication.BasicAuthenticationModule"/>
            </modules>
<!-- the rest of the web.config follows -->

一切正常,但每当我们进行 PROD 部署并更改 web.config 时,都需要手动更改文件以禁用基本身份验证(如前所述,我们仅在非产品上需要它) .

所以我想知道 - 有没有办法使用 applicationHost.xdt 文件启用基本身份验证?由于这是一个不经常更改的文件,它会让我们的生活更轻松。

我已经检查了 IIS 管理器扩展,但没有看到任何可以让我完成这项工作的东西。感谢任何提示!

更新 - 添加我的 web.config(我想用 applicationHost.xdt 更新)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect to HTTPS" stopProcessing="true">
                    <match url="(.*)"/>
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$"/>
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

根据您的描述,我假设您正在使用 DevBridge Azure Power Tools which supports basic authentication for Windows Azure websites. I followed this project Devbridge.BasicAuthentication.Test 来测试我这边的 XDT Transform。我这边可以搞定,你可以参考一下

1.Create一个Release-dev配置

单击"Build > Configuration Manager",为网络项目添加新配置。

2.Add一个名为Web.Release-dev.config的web配置文件,配置内容如下:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <!--make sure the configSections is the first child element under configuration-->
  <configSections xdt:Transform="InsertBefore(/configuration/*[1])" />
  <configSections xdt:Locator="XPath(/configuration/configSections[last()])">
    <section name="basicAuth" type="Devbridge.BasicAuthentication.Configuration.BasicAuthenticationConfigurationSection" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/>
  </configSections>
  <configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

  <basicAuth allowRedirects="true" xdt:Transform="InsertAfter(/configuration/configSections)">
    <credentials xdt:Transform="InsertIfMissing">
      <add username="test" password="test" xdt:Transform="InsertIfMissing"/>
    </credentials>
  </basicAuth>

  <system.webServer xdt:Transform="InsertIfMissing">
    <modules xdt:Transform="InsertIfMissing">
      <add name="MyBasicAuthenticationModule" type="Devbridge.BasicAuthentication.BasicAuthenticationModule" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/>
    </modules>
  </system.webServer>

</configuration>

注意:您可以参考Xdt transform samples. Also, you could follow this official document关于您在[=66]中使用的xdt:Transformxdt:Locator属性的语法=] 转换文件。

3.Publish Web 项目使用 release-dev 配置:

4.Check 通过 KUDU 部署的 web.config 文件:

浏览本站,您可以看到如下截图:

更新

对于解决方法,我假设您可以从 git 存储库中排除 web.config 文件。并为您的 DEV 和 QA 环境在 "D:\home\site\wwwroot" 下添加 web.config 文件,在 "D:\home\site\wwwroot\bin" 下添加 Devbridge.BasicAuthentication.dll 以启用基本身份验证,如下所示: