Azure Web App - 通过applicationHost.xdt添加基本身份验证?

时间:2016-12-15 10:51:24

标签: iis-7 azure-web-sites

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

for (WebElement trElement : tblLookupSites) {
    List<WebElement> td_collection = trElement.findElements(By.xpath("td"));
for (WebElement tdElement : td_collection) {
    List<WebElement> td_lblcollection =tdElement.findElements(By.id("id1"));
    td_lblcollection.get(0).click();
}
}  

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

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

我已经检查过IIS管理器扩展,但是没有看到任何可以让我工作的东西。任何提示都表示赞赏!

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

    <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 -->

1 个答案:

答案 0 :(得分:1)

根据您的描述,我假设您使用DevBridge Azure Power Tools支持Windows Azure网站的基本身份验证。我按照这个项目Devbridge.BasicAuthentication.Test来测试XDT Transform。我可以让它在我身边工作,你可以参考它。

1.创建Release-dev配置

点击&#34;构建&gt; Configuration Manager&#34;,为Web项目添加新配置。

2.添加名为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。此外,您可以按照此官方document了解您在Web.config转换文件中使用的xdt:Transformxdt:Locator属性的语法。

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

4.通过KUDU检查已部署的web.config文件:

浏览网站,您可以看到以下屏幕截图:

<强>更新

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