无法使用IIS 6.0进行WCF服务身份验证

时间:2012-01-16 12:40:22

标签: wcf iis

我将尽量让这个问题尽可能简短,因为这个问题对我来说有点棘手。如果不清楚,请询问任何疑问。所以,你走了,

这是我在工作时遇到的错误信息, “HTTP请求未经授权使用客户端身份验证方案'Ntlm'。从服务器收到的身份验证头是'Negotiate,NTLM'。远程服务器返回错误:(401)Unathorized”

我有两个Windows框,Box1和Box2。我在每个IIS 6中都有2个WCF服务(ServiceA和ServiceB)。从功能上讲,ServiceA只与db通信。 ServiceB与ServiceA进行对话并获得结果。这两种服务都启用了匿名访问和集成Windows身份验证。 ServiceA在Application Pool ServiceAPool下运行,ServiceB在ServiceBPool下运行。每个应用程序池都配置了域用户的标识。 这些应用程序池在Box1和Box2上完全相同。

首先,我的客户端应用程序(只是一个小型控制台应用程序),使用我的Windows凭据调用Box1上的ServiceA。它有效。

其次,我的客户端应用程序使用我的Windows凭据调用Box1上的ServiceB。此ServiceB在内部使用域用户(应用程序池标识)调用ServiceA。它可以正常工作。

我上面提到的第二点不适用于Box2,它给出了上述错误。需要明确的是,包括web.config文件等在内的服务代码在两个框中完全相同。应用程序池的域用户是相同的。两个框都在同一个域中。

我观察到的(可能),在Box2上,当我使用我的Windows凭据呼叫ServiceA时,它可以工作,但是当服务与其他域帐户(例如我的应用程序池帐户)之间有跳时,它会失败上面的错误。

如果有人见过这种行为,请分享一些信息。

1 个答案:

答案 0 :(得分:1)

我想回答一下我自己的问题。 事实证明这是一个friggin注册表项更新,以使身份验证工作正常。基本上它是关于禁用“DisableLoopbackCheck”值。更多信息可以在

找到

http://blogs.msdn.com/b/distributedservices/archive/2009/11/10/wcf-calling-wcf-service-hosted-in-iis-on-the-same-machine-as-client-throws-an-authentication-error.aspx

http://support.microsoft.com/default.aspx?scid=kb;EN-US;926642