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:Transform
和xdt: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
以启用基本身份验证,如下所示:
我有一个 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:Transform
和xdt: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
以启用基本身份验证,如下所示: