IIS Windows 集成身份驗證,不通過域使用者
我有兩台伺服器。兩者都執行 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 身份驗證的身份驗證設置中選中啟用核心模式身份驗證。
我注意到如果為應用程序池使用自定義身份,它說要保持啟用狀態。