连接到具有Windows安全性的WCF服务时出错

本文关键字:WCF 服务 出错 安全性 Windows 连接 | 更新日期: 2023-09-27 18:29:47

我有一个客户端在两个端点上使用以下方法连接到WCF服务:

<security mode="Message">
  <message clientCredentialType="Windows" />
</security>

这在我的开发环境中有效(都在本地运行),并且协商工作正常。当我把它推到测试环境中时,我得到以下消息:

与'的SOAP安全协商http://host/service'用于目标'http://host/service'失败。有关详细信息,请参阅内部异常。

内部异常:

System.ComponentModel.Win32异常:安全支持提供程序接口(SSPI)身份验证失败。服务器可能未运行在标识为"主机/服务器名称.domain"的帐户中。如果服务器在服务帐户(例如网络服务)中运行,在中指定帐户的ServicePrincipalName作为标识服务器的EndpointAddress。如果服务器在用户中运行帐户,指定帐户的UserPrincipalName作为中的标识服务器的EndpointAddress。

在随机更改属性并进行一般性的混乱之后,我能使其工作的唯一方法是更改服务的应用程序池,使其使用LocalSystem作为标识。这随后导致系统管理员有小猫,我无法继续做下去。

有人能解释为什么会发生这种情况吗?客户端Windows帐户和AppPool的标识都在同一域中。该服务正在同一域中的服务器上运行。

连接到具有Windows安全性的WCF服务时出错

如果身份验证适用于LocalSystem,但不适用于域帐户,则可能是您缺少域帐户的SPN。此页面提供了有关配置服务运行身份的一些背景信息:http://msdn.microsoft.com/en-us/library/bb628618.aspx