Назад | Перейти на главную страницу

IIS Windows Integrated Auth, без передачи домена \ пользователя

У меня два сервера. оба работают под управлением IIS7.5.

они оба запускают одну и ту же версию веб-приложения, которое занимает несколько пулов приложений (оно работает как множество небольших сервисов и т.п.).

У меня есть плагин Excel, который подключается к этому приложению и может извлекать данные.

единственное различие, которое я знаю между двумя машинами, заключается в том, что рабочий запускает все свои пулы приложений со стандартными учетными записями, локальной системой, идентификатором приложения и т. д.

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

суть проблемы, похоже, в том, что на работающей машине обмен происходит следующим образом -

POST /Service/Hierarchy.svc - 80 - 10.100.69.49 - 200 0 0 0
GET /Application/login/login.dll - 80 DOM\Account 10.100.69.49 - 200 0 0 140

а на отказавшем сервере -

POST /Service/Hierarchy.svc - 80 - 10.100.69.49 - 200 0 0 0
GET /Application/login/login.dll - 80 - 10.100.69.49 - 401 2 5 358

обратите внимание, что учетная запись не передается.

все остальные настройки, которые я вижу, такие же, за исключением .... в настройках проверки подлинности application / login / login.dll, на рабочем сервере это Negotiate, затем NTLM, на отказавшем сервере, если я поставлю его таким образом, тогда другие части приложения перестают работать с ошибкой 401, требующей учетных данных.

Может ли кто-нибудь дать совет, как это отладить?

Спасибо

edit: вот урезанный снимок wirehark неудачной попытки.

GET /Application/login/login.dll HTTP/1.1
Authorization: Negotiate YIILwgYGKwYBBQUCoIILtjCCC7KgM...etc
Host: MachineName

HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/7.5
WWW-Authenticate: Negotiate oYGNMIGKoAMKAQGhC...etc
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Wed, 20 Apr 2016 05:42:58 GMT
Content-Length: 1293

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
...html
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title>
...html
<div id="header"><h1>Server Error</h1></div>
  <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
  <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
...html



GET /Application/login/login.dll HTTP/1.1
Authorization: Negotiate oYILiTCCC4WgAwoBAa...etc
Host: MachineName

HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/7.5
WWW-Authenticate: Negotiate oX8wfaADCgEBonYEdGByBgk...etc
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Wed, 20 Apr 2016 05:42:58 GMT
Content-Length: 1293

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
...html
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title>
...html
<div id="header"><h1>Server Error</h1></div>
...html
  <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
  <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
...html

Я знаю, что данный пользователь имеет доступ к URL-адресам в запросах, поэтому я могу вручную вызвать /Application/login/login.dll.

является

GET /Application/login/login.dll HTTP/1.1
Authorization: Negotiate YIILwgYGKwYBBQUCoIILtjCCC7KgM...etc
Host: MachineName 

где он пытается передать логин? это может быть ошибкой, и поэтому я не вижу, чтобы пользователь прошел?

Спасибо еще раз

редактировать:

Я вижу KRB5KRB_AP_ERR_MODIFIED в Wireshark, которого раньше не было, также в деталях он перечисляет ServiceAccount, который запускает AppPool.

поэтому я думаю, это может быть связано с этим - Проверка подлинности Windows KRB5KRB_AP_ERR_MODIFIED

Эй, исправил :)

просто необходимо установить флажок Включить проверку подлинности в режиме ядра в настройке проверки подлинности для проверки подлинности Windows в приложении / входе / сайте.

Я заметил, что он сказал оставить его включенным при использовании пользовательских идентификаторов для пула приложений.