mor*_*are 8 .net c# iis wcf windows-authentication
我有一个客户端在两个端点上使用以下连接到WCF服务:
<security mode="Message">
<message clientCredentialType="Windows" />
</security>
Run Code Online (Sandbox Code Playgroud)
这适用于我的开发环境(都在本地运行),并且协商正常.当我将它推送到测试环境时,我收到以下消息:
与"SOAP安全协商://主机/ HTTP服务为目标" 的http://主机/服务 "失败.有关详细信息,请参阅内部异常
内在的例外:
System.ComponentModel.Win32Exception:安全支持提供程序接口(SSPI)身份验证失败.服务器可能未在标识为" host/server-name.domain " 的帐户中运行.如果服务器正在服务帐户(例如,网络服务)中运行,请将该帐户的ServicePrincipalName指定为服务器的EndpointAddress中的标识.如果服务器在用户帐户中运行,请将该帐户的UserPrincipalName指定为服务器的EndpointAddress中的标识.
在随机更改属性并且通常搞乱之后,我能够使其工作的唯一方法是更改服务的应用程序池以使用LocalSystem作为标识.这随后导致系统管理员有小猫,而不是我可以继续做的事情.
任何人都可以解释为什么会这样吗?客户端Windows帐户和AppPool的标识都在同一个域中.该服务正在同一域中的服务器上运行.
如果身份验证适用于 LocalSystem,但不适用于域帐户,则可能是您缺少域帐户的 SPN。此页面提供了有关配置服务运行身份的一些背景信息:http://msdn.microsoft.com/en-us/library/bb628618.aspx