Я сейчас занимаюсь этим в производственной среде.В моем случае решение было простым, поскольку MADAM уже был установлен для того, чтобы позволить обычным читателям RSS безопасно получать RSS-каналы на сайте.
Хитрость для этого заключается в том, чтобы включить базовую аутентификацию длястраницы, которые вы хотите вызывать автоматически, используя любые внешние процессы, что открывает вам огромное количество способов автоматического доступа к сайту;этот файл VBScript, например, вызывает служебный URL-адрес и проверяет, является ли ответ сервера точным SUCCESS
.
Option Explicit
Dim result
result = PerformMaintenance("http://www.mysite.com/MyController/RunCleanupScript")
WScript.Quit(result)
Function PerformMaintenance(URL)
Dim objRequest
Set objRequest = CreateObject("Microsoft.XmlHttp")
'I use a POST request because strictly speaking a GET shouldn't change anything on the server.
objRequest.open "POST", URL, false, "LimitedDaemonUser", "SecretDaemonPassword"
objRequest.Send
if (objRequest.ResponseText = "SUCCESS") Then
PerformMaintenance = 0
Else
PerformMaintenance = 1
End If
set objRequest = Nothing
End Function
Базовая аутентификация достаточно проста для начала работы.Просто включите MADAM в свой проект и настройте его в своем файле Web.config.
Добавление этих разделов / параметров Web.config (IIS6) должно привести к тому, что ваш пример запроса будет работать, если вы используете стандартныйMembershipProvider.Вам просто нужно изменить MyNamespace.MembershipUserSecurityAuthority
на ссылку на реальный класс.Исходный код MembershipUserSecurityAuthority
включен в MADAM в папке App_Code
демонстрационного веб-приложения.
<configuration>
<configSections>
<sectionGroup name="madam">
<section name="userSecurityAuthority" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="formsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionSectionHandler, Madam" />
</sectionGroup>
</configSections>
<madam>
<userSecurityAuthority realm="MyRealm" provider="MyNamespace.MembershipUserSecurityAuthority, MyNamespace" />
<formsAuthenticationDisposition>
<discriminators all="false">
<discriminator inputExpression="Request.AppRelativeCurrentExecutionFilePath" pattern="~/MyController/RunCleanupScript$" type="Madam.RegexDiscriminator, Madam" />
</discriminators>
</formsAuthenticationDisposition>
</madam>
<system.web>
<httpModules>
<add name="FormsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionModule, Madam" />
<add name="AuthenticationModule" type="Madam.BasicAuthenticationModule, Madam" />
</httpModules>
</system.web>
</configuration>