Настройте базовую аутентификацию в службе приложений Azure

Настройте базовую аутентификацию в службе приложений Azure

По разным причинам я использую Azure's App Serviceдля обслуживания статических файлов. Я хотел бы защитить этот доступ, Http Basic Authenticationкоторого достаточно для моих целей. Как я могу это сделать? Я пробовал загружать, .htpasswdно это, похоже, не работает.

Я не использую ASP.NET, поэтому нет возможности сделать это в коде. На портале Azure я вижу такие опции, как вход через Google, Facebook, Twitter в разделе App Service -> Authentication/Authorization, но для меня это огромные накладные расходы.

решение1

В настоящее время это невозможно. Azure webapp не поддерживает это.

Вы можете это проверитьобратная связь.

решение2

Можно включить базовую аутентификацию для веб-приложений Azure с помощью некоторых настроек вapplicationHost.xdt. Вы можете загрузить некоторые модули в этом файле при запуске вашего веб-приложения.

Шаги:

  • Перейдите к своему веб-приложению на портале Azure.
  • В левом меню найдите заголовокИнструменты разработкивыбратьРасширенные инструменты(Куду)
  • ИспользоватьКонсоль отладки > CMDинструмент для перехода в каталог WebApp:\главная\сайт
  • Создайте файл с именем: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
  • Сохраните файл и остановите и запустите свое веб-приложение (простойПерезапускволянетдостаточно)

Примечания:

  • Не уверен, работает ли это в веб-приложениях на базе Linux.
  • Вы можете добавить этот шаг в свои конвейеры развертывания, используя FTP.
  • Обновлять:Я заметил проблемы с applicationHost.xdt при использовании его на вторичных слотах веб-приложений. Кажется, работает только основной слот.

решение3

Базовая аутентификация в настоящее время не поддерживается в Azure Web Apps через портал Azure.

Однако DevBridge предоставляет модуль, позволяющий включить базовую аутентификацию.

https://www.alexlindgren.com/posts/password-protect-azure-website-with-basic-authentication/

https://www.alexlindgren.com/posts/password-protecting-azure-websites-revisited/

https://www.devbridge.com/articles/basic-authentication-for-windows-azure-websites/

Исходный код https://github.com/devbridge/AzurePowerTools/tree/master/Devbridge.BasicAuthentication

Связанный контент