gpt4 book ai didi

c# - 使用在终结点 : correct UPN does not work 上设置标识的 WCF

转载 作者:行者123 更新时间:2023-11-30 21:05:34 26 4
gpt4 key购买 nike

我写了一个 Windows 服务托管的 WCF 服务。已部署或本地主机工作正常,我的客户端应用程序可以使用它。

如果我更改 Windows 服务的登录设置并设置域用户(从默认的“本地系统”更改),我的客户端应用程序将无法再使用该服务。我得到的异常(exception)是

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)。

换句话说,服务/用户名检查似乎只有在我的客户端应用程序中的设置错误时才起作用。

尊敬的社区,非常感谢您就此主题提供帮助。

谢谢

最佳答案

解决方案是...使用 CreateUpnIdentity 而不是 CreateSpnIdentity 让 WCF 正确处理 UPN。

原因是服务器配置文件中没有任何身份节点并且将域帐户作为服务用户,服务公开的默认身份是 UPN“account@domain”。

关于c# - 使用在终结点 : correct UPN does not work 上设置标识的 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com