У меня есть сайт MVC 3, в котором некоторые контроллеры/действие требуют проверки подлинности Windows, другие - нет, то есть анонимны.IIS 7.5 Windows + Анонимная проверка подлинности работает с перерывами
Сайт работает нормально какое-то время, я могу получить доступ как к анонимным действиям, так и к аутентифицированным (без запроса, учетные данные передаются автоматически в Chrome/IE/FireFox), но тогда аутентификация просто перестает работать, я начинаю запрашивать учетные данные, которые никогда не принимаются.
Я должен либо перезагрузить весь сервер, либо изменить физический путь сайта к другому приложению, сделать аутентифицированный запрос, который работает, когда он возвращается на исходный сайт. Ситуация затем промывается и повторяется, но я не могу найти никакого шаблона. Если я ничего не сделаю, аутентификация останется сломанной.
У меня есть IIS 7.5 настроен следующим образом:
App Pool
- .NET Framework версий - v4.0
- Управляемый Трубопроводный режим - Встроенный
- Удостоверение пула приложений - ApplicationPoolIdentity
Сайт
- Anonymous Authentication - Enabled
- Анонимный идентификатор пользователя - IUSR [Я считаю, что это по умолчанию]
- ASP.NET Олицетворение - Отключено
- формы аутентификации - Отключено
- проверки подлинности Windows - Enabled
- Расширенная проверка подлинности Windows - выключено
- Аутентификация Windows Включить аутентификацию в режиме ядра - Вкл.
- Поставщики проверки подлинности Windows - вести переговоры, NTLM
Контроллеры
// Anonymous Controller
public class HomeController : Controller
{
public ActionResult Index()
{
return this.View();
}
}
// Authenticated Controller
[Authorize]
public class AnotherController : Controller
{
public ActionResult Index()
{
var viewModel = // create view model;
return this.View(viewModel);
}
}
Во все времена, аутентификация работает или не GET в/дом/индекса возвращает 200. Точно так, как ожидалось. При аутентификации работает запрос GET к/другой/индекса выглядит следующим образом:
> GET /another/index
Response: 401
Response Headers: WWW-Authenticate: NTLM, WWW-Authenticate:Negotiate
> GET /another/index
Request Header: Authorization: Negotiate TlRMIVNDUAACAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Response: 401
Response Header: WWW-Authenticate: Negotiate TlRMTVNTUAACAAAACAAEADgAAAAVgoni2YSlwIHmCL4AAAAAAAAAAIgAiAA8AAAABgGxHQAAAA9GAFIAAgAEAEYAUgABABQARgBSAEkATgBUAFIAQQBOAEUAVAAEABQARgBSAC5ATgBEAFMALgBjAG8AbQADACoARgBSAKkATgBUAFIAQQBUAEUAVAAuAGCAcgAuAG4AZACzAC4AYvBvAG0ABQAOAE4ARABTAC6AYwBvAG0ABwAIAOST3lPK980BAAAAAA==
> GET /another/index
Request Headers: Authorization: Negotiate TlRMTVNTUAACAAAACAAEADgAAAAVgoni2YSlwIHmCL4AAAAAAAAAAIgAiAA8AAAABgGxHQAAAA9GAFIAAgAEAEYAUgABABQARgBSAEkATgBUAFIAQQBOAEUAVAAEABQARgBSAC5ATgBEAFMALgBjAG8AbQADACoARgBSAKkATgBUAFIAQQBUAEUAVAAuAGCAcgAuAG4AZACzAC4AYvBvAG0ABQAOAE4ARABTAC6AYwBvAG0ABwAIAOST3lPK980BAAAAAA==
Response: 200
При аутентификации нарушает запрос GET к/другой/индекса выглядит следующим образом:
> GET /another/index
Response: 401
Response Headers: WWW-Authenticate: NTLM, WWW-Authenticate:Negotiate
> GET /another/index
Request Header: Authorization: Negotiate TlRMIVNDUAACAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Response: 401
Response Headers: WWW-Authenticate: NTLM, WWW-Authenticate:Negotiate
В этой точке I я запрошены учетные данные, которые я ввожу, тот же запрос, ответ негодуют:
> GET /another/index
Request Header: Authorization: Negotiate TlRMIVNDUAACAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Response: 401
Response Headers: WWW-Authenticate: NTLM, WWW-Authenticate:Negotiate
кто-нибудь знает, если я что-то неправильно настроена (я довольно уверен, что я не» t или я бы не ожидал, что он вообще будет работать), почему аутентификация ломается или как я могу ее остановить?
Большое спасибо.