У меня есть установленное приложение, требующее проверки подлинности Windows под Windows 2012, IIS 8.5. Когда определенные пользователи используют приложение, они получают ошибку 401 после запроса / ответа. Остальные могут без проблем пользоваться сайтом. Все пользователи находятся в одной группе AD, но это может быть совпадением.
Вот запрос и ответы, которые обрабатываются (веб-сайт является внутренним для нас, http: // lcf - это A-запись, а не CNAME):
Запрос:
Отклик:
В журнале безопасности это типично:
An account failed to log on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: test1
Account Domain: CORP
Failure Information:
Failure Reason: Account locked out.
Status: 0xC0000234
Sub Status: 0x0
Process Information:
Caller Process ID: 0x0
Caller Process Name: -
Network Information:
Workstation Name: 1N14SW1-PC
Source Network Address: -
Source Port: -
Detailed Authentication Information:
Logon Process: NtLmSsp
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only): -
Key Length: 0
Данная учетная запись ("test1") не заблокирована из Active Directory из-за сбоев входа в систему и т. Д. Я думаю, что здесь блокировка должна быть из IIS.
В журнале IIS это соответствующая запись:
2015-04-06 13:41:27 10.0.150.6 GET /Loss - 80 CORP\test1 10.0.20.28 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/6.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+EIE10;ENUSWOL) - 401 0 0 15
Для сайта:
Я также пробовал несколько браузеров. Фактически, переключение пользователей на одном компьютере дает разные результаты. (Пользователь A на машине A в порядке, пользователь B на машине A - нет.) Машины находятся в одной интрасети.
Изменить: я добавил файл верхнего уровня «test.html», чтобы упростить задачу. Я включил регистрацию сбоев и вот мой результат. Кто-нибудь может прочитать эти руны?
РЕДАКТИРОВАТЬ
Lockoutstatus.exe показывает «Не заблокирован» на всех 12 контроллерах домена для этого домена.
Успешный вход:
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Impersonation Level: Impersonation
New Logon:
Security ID: CORP\xxxx1
Account Name: xxxx1
Account Domain: CORP
Logon ID: 0x12E1355
Logon GUID: {00000000-0000-0000-0000-000000000000}
Process Information:
Process ID: 0x0
Process Name: -
Network Information:
Workstation Name: 1N14SW1-PC
Source Network Address: -
Source Port: -
Detailed Authentication Information:
Logon Process: NtLmSsp
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only): NTLM V2
Key Length: 0
Я вроде как на грани своего гугл-фу и веревки. Какие-либо предложения?
Тот факт, что все заблокированные пользователи находятся в одной группе AD, вероятно, не случаен. Эти пользователи могут не иметь разрешений NTFS для доступа к папке приложения. Чтобы избежать этой проблемы, я сделал следующее, что должно гарантировать, что учетная запись удостоверения пула приложений используется для всего доступа к файлам, и никогда не будет смешного бизнеса с олицетворением.
Откройте диспетчер IIS. Выберите приложение в разделе Сайты. Дважды щелкните значок «Редактор конфигурации». В раскрывающемся списке "Раздел" найдите system.webServer/serverRuntime
. Установите это на UseWorkerProcessUser
.
То же самое можно сделать с помощью файлов appcmd.exe или .config.
Немного удивительно, что это не поведение по умолчанию. Видимо при использовании аутентификации Windows и настройке по умолчанию (UseAuthenticatedUser
), некоторый доступ к файлам осуществляется с использованием разрешений пользователя, просматривающего сайт, а некоторый доступ к файлам осуществляется с использованием разрешений удостоверения пула приложений. Лично я всегда хотите использовать только разрешения удостоверения пула приложений, поэтому я должен не забыть настроить параметры, описанные выше.