Azure

在 Azure 的應用服務上配置基本身份驗證

  • May 10, 2021

出於不同的原因,我使用Azure's App Service它來提供靜態文件。我想確保此訪問權限Http Basic Authentication足以滿足我的目的。我怎樣才能做到這一點?我嘗試上傳.htpasswd,但似乎不起作用。

我沒有使用 ASP.NET,所以無法在程式碼中執行此操作。在 Azure 的門戶中,我在 App Service -> Authentication/Authorization 下看到了 Google、Facebook、Twitter 登錄等選項,但這對我來說是巨大的成本。

目前,這是不可能的。Azure webapp 不支持此功能。

您可以查看此回饋

可以使用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 時存在問題。只有主插槽似乎工作。

引用自:https://serverfault.com/questions/901508