我有两台服务器。两者都运行 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