ASP.NET MVC периодически возникающие ошибки авторизации 401 - PullRequest
2 голосов
/ 17 марта 2012

У меня есть сайт интрасети ASP.NET MVC, который использует аутентификацию Windows (Kerberos) исключительно с сквозной аутентификацией. Это настройка для использования пула приложений (v4 / встроенный), который использует идентификатор сетевой службы. Веб-сайт предоставляет симпатичный пользовательский интерфейс поверх общего сетевого ресурса, размещенного на другом компьютере (блок SAMBA NAS). Иногда (и обычно, когда кто-то некоторое время не обращался к сайту) клиенты получают ошибку авторизации 401 в тот момент, когда код MVC пытается получить информацию о каталоге (System.IO.Directory.GetLastWriteTime) на удаленном общем ресурсе UNC. , Журнал событий на компьютере IIS фиксирует ошибку аудита безопасности в тот же момент времени:

+ System 

  - Provider 

   [ Name]  Microsoft-Windows-Security-Auditing 
   [ Guid]  {54849625-5478-4994-a5ba-3e3b0328c30d} 

   EventID 4625 

   Version 0 

   Level 0 

   Task 12544 

   Opcode 0 

   Keywords 0x8010000000000000 

  - TimeCreated 

   [ SystemTime]  2012-03-17T00:43:50.522Z 

   EventRecordID 398873 

   Correlation 

  - Execution 

   [ ProcessID]  696 
   [ ThreadID]  792 

   Channel Security 

   Computer lvtloweb1.acme.com 

   Security 


- EventData 

  SubjectUserSid S-1-0-0 
  SubjectUserName - 
  SubjectDomainName - 
  SubjectLogonId 0x0 
  TargetUserSid S-1-0-0 
  TargetUserName  
  TargetDomainName  
  Status 0xc000006d 
  FailureReason %%2304 
  SubStatus 0xc0000133 
  LogonType 3 
  LogonProcessName Kerberos 
  AuthenticationPackageName Kerberos 
  WorkstationName - 
  TransmittedServices - 
  LmPackageName - 
  KeyLength 0 
  ProcessId 0x0 
  ProcessName - 
  IpAddress - 
  IpPort - 

Странная вещь в том, что если вы сидите и обновляете страницу снова и снова, она обычно проходит ошибку 401 примерно за минуту. У кого-нибудь есть идеи о том, как решить эту проблему? О да, машина IIS размещена на виртуальной машине. Гостевой ОС является Windows Server 2008 Enterprise 6.0.6002 с пакетом обновления 2.

1 Ответ

3 голосов
/ 12 апреля 2012

Кит,

Поскольку это происходит чаще всего после простоя пользователя, я склоняюсь к какому-то доброму событию (например, тайм-аут сеанса), которое может сделать недействительными учетные данные для вашего сервера.Я предполагаю один сервер, так как вы не упомянули какую-либо веб-ферму.

Часть меня думает, что вы, вероятно, забили угол ожидания сеанса.Если вы не чувствовали себя в безопасности, полагая, что пользователи будут «автоматически проходить аутентификацию», и тайм-аут в середине работы не приведет к сбою.Тем не менее, я не уверен, что полностью доверял бы этому.Чтобы хотя бы исключить эту возможность, я бы добавил подпрограмму, которая регистрирует информацию о текущем сеансе / учетных данных до начала этой операции.Несмотря на то, что пользователь «всегда входит в систему», предполагая, что он находится на своем компьютере, я видел странные проблемы с VPN, прокси-серверами, двойным прыжком на сервере, конфигурациями IE для параметров «доверенных зон» и «интрасети».Даже компьютер, внезапно изменивший маршрут к серверу, может вызвать проблемы.Я не уверен, что эмуляция сети на виртуальной машине сыграет свою роль, но кто знает.

Вот «стартовая» статья, касающаяся IE, его сложного подхода к аутентификации и роли, которую он играет в качестве клиентского приложения.доступ к вашему приложению Intranet MVC.(Стоит углубиться в то, как IE автоматически магически аутентифицируется в среде Windows AD.)

http://support.microsoft.com/kb/258063/en-us

Вот связанная проблема, возникшая у кого-то из-за двойного прыжка, вызывающего 401,Я также включил ссылку на другую хорошую «стартовую страницу» по расследованию подобных проблем.

http://social.msdn.microsoft.com/Forums/en/sqlreportingservices/thread/6d1604e5-e739-41e4-89a5-c6681bff2e61

http://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx

Извините, если что-то есть над вамиуже знал или для общего характера моего ответа.Это сложно без реального доступа к сети или возможности добавления регистрации в ваш код.Надеюсь, я указал вам правильное направление.

...