По разным причинам я использую 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