Iis-7.5

IIS Windows 集成身份驗證,不通過域使用者

  • September 13, 2020

我有兩台伺服器。兩者都執行 IIS7.5。

它們都執行相同版本的基於 Web 的應用程序,該應用程序佔用多個應用程序池(它作為許多小服務等執行)。

我有一個連接到該應用程序並可以提取數據的 excel 外掛。

我所知道的兩台機器之間的唯一區別是,工作的那台使用標準帳戶、localsystem、apppoolidentity 等執行其所有應用程序池。

失敗的一個對其大多數應用程序池(主要是 Web 應用程序使用的)使用特定的服務帳戶。

問題的癥結似乎是在工作機器上的交換如下 -

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 挑戰。

任何人都可以就如何調試這個提供任何建議嗎?

謝謝

編輯:這是對失敗嘗試的精簡wireshark 擷取。

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 

它試圖在哪里傳遞使用者名?這可能會失敗,這就是為什麼我沒有看到使用者被通過?

再次感謝

編輯:

我在 Wireshark 中看到了以前不存在的 KRB5KRB_AP_ERR_MODIFIED,在詳細資訊中它還列出了執行 AppPool 的 ServiceAccount。

所以我認為這可能與此有關-Windows Authentication KRB5KRB_AP_ERR_MODIFIED

哎呀,修好了:)

只需在應用程序/登錄/站點中的 Windows 身份驗證的身份驗證設置中選中啟用核心模式身份驗證。

我注意到如果為應用程序池使用自定義身份,它說要保持啟用狀態。

引用自:https://serverfault.com/questions/771419