我编写了一个 Windows 服务托管的 WCF 服务。已部署或 localhost 工作正常,我的客户端应用程序可以使用它。
如果我更改 Windows 服务的登录设置并设置域用户(从默认的“本地系统”更改),我的客户端应用程序将无法再使用该服务。我得到的例外是
A call to SSPI failed
没有内部异常或任何细节。为了解决这个问题,我尝试在我的客户端应用请求中设置 UPN 以获得有效的服务名称检查。这是在客户端通过代码在端点中设置身份完成的:
string uri = "myServiceUri";
EndpointIdentity identity = EndpointIdentity.CreateSpnIdentity("user@domain");
EndpointAddress epa = new EndpointAddress(uri, identity, new AddressHeader[] { });
出现了非常奇怪的行为。
如果我在客户端请求中设置了确切的 UPN,比如说“user@domain”,我会得到一个新异常(没有内部异常,没有详细信息)
The following remote identity failed verification: 'user@domain'
如果我在客户端请求中将任何其他字符串设置为 UPN,它可以正常工作,比如“ XXXuser@domainXXX ”、“ toto ”,甚至是String.Empty。
服务器端,我没有在配置文件中设置任何身份节点来保持默认行为,即 UPN 检查(没有 SPN 或 DNS)。
换句话说,服务/用户名检查似乎只有在我的客户端应用程序中的设置错误时才有效。
亲爱的社区,您在此主题上的帮助将不胜感激。
谢谢