Я пробовал IIS Manager и некоторые онлайн-инструменты преобразования, но не могу понять, как добиться следующих правил .htaccess в файле web.config:
SetEnvIfNoCase Host my-domain.com nopassreq
AuthType Basic
AuthName "Restricted"
AuthUserFile "/home/my-domain.com/passwd"
require valid-user
Order allow, deny
Allow from env=nopassreq
Satisfy any
Обычно, если пользователь зашел на сайт с помощью my-domain.com
он не запрашивает аутентификацию, но если бы это было my-other-domain.com
или что-нибудь еще, он запросит аутентификацию.
У меня есть несколько доменов, указывающих на один и тот же экземпляр облака в Azure, и мне нужно, чтобы некоторые из них требовали аутентификации, а некоторые нет.
Немного попробовал, не эксперт .net, и получил этот код:
<rewrite>
<outboundRules>
<rule name="nopassres">
<match serverVariable="nopassreq" pattern=".*" />
<action type="Rewrite" value="dontpass" />
<conditions>
<add input="{HTTP_HOST}" pattern="my\-domain\.com" />
</conditions>
</rule>
</outboundRules>
</rewrite>
Я не знаю, как настроить это в IIS с помощью правил перенаправления URL-адресов, потому что поддерживаются только действия «Перезапись», «Нет», «Перенаправление», «Пользовательский ответ» и «Запрос на прерывание». Вы можете использовать их для установки переменных среды, которые ваш код сможет оценить позже.
Поскольку этот параметр можно определить для каждого сайта, возможно, вам больше повезет с реализацией некоторой автоматизации с помощью командлетов PowerShell для IIS. Например, чтобы включить анонимную аутентификацию:
Set-WebConfigurationProperty -filter /system.WebServer/security/authentication/AnonymousAuthentication `
-name enabled -value false -location YourApp