1

我正在尝试从不同服务器上的 .ASHX 内部通过 WCF 调用 Sharepoint Web 服务。如果我在 Visual Studio 的调试 Web 服务器内部运行,但不能从 IIS 运行,我的代码就可以工作。工作服务器在各种身份验证模式(Kerberos、NTLM)下工作,而非工作服务器在任何身份验证模式下都不工作。在这两种情况下,我都在冒充同一个用户。

使用 NTLM,我在 Wireshark 中记录了工作会话和非工作会话。在工作中,Wireshark 解析 NTLM 数据并报告我期望的 DOMAIN 和 USER NAME。在非工作中,它显示

  DOMAIN: NULL
  USER NAME: NULL

我已经在 IIS 中进行了调试,并且模拟肯定在服务调用时起作用。如果我检查WindowsIdentity.GetCurrent(),它就是我期望的用户。

如果我检查工作服务器和非工作服务器上的 WCF 服务代理,它们看起来是相同的——处理 ClientCredentials 的部分设置""为两个版本的用户名和密码。

关于还有什么要检查的任何想法?为什么 NTLM 数据会将 DOMAIN 和 USER NAME 设置为 NULL - 它从哪里获取?

4

1 回答 1

1

根据这个:

http://support.microsoft.com/kb/207671

当 IIS 为 HTTP 请求提供服务时,IIS 会执行模拟,以便适当限制对资源的访问以处理请求。模拟的安全上下文基于为请求执行的身份验证类型。IIS 4.0 提供的五种不同类型的身份验证是:

Authentication Type                          Impersonation Type
------------------------------------         ---------------------
Anonymous Access (no authentication)         Network
Auto Password Synchronization is
ON (ON=default)

Anonymous Access (no authentication)         IIS Clear Text
Auto Password Synchronization is OFF         

Basic Authentication                         IIS Clear Text 

NT Challenge/Response Authentication         Network 

Client SSL Certificate Mapping               Interactive

就我而言,我有一个网络令牌,但是

Network tokens are "NOT" permitted to access network resources. (Network tokens are named so because this kind of token is traditionally created by a server when a user is authenticated across the network. To allow the server to use a network token to act as a network client and access another server is called "delegation" and is considered a possible security hole.)

The KB has many possible ways to avoid the problem

于 2012-05-23T12:14:56.850 回答