12

我正在尝试在我的服务上设置客户端模拟。

我需要为我的服务端点的 servicePrincipalName 设置一个值

我正在看这篇MSDN 文章,但仍然无法弄清楚

我的服务托管在我们称为 ServerName1 的服务器上的控制台应用程序中。
Uri 是:net.tcp://ServerName1:9990/TestService1/.

我的 servicePrincipalName 具体应该是什么?

我试过了,没有喜悦:

<identity>
    <servicePrincipalName value="ServerName1" />
</identity>
4

4 回答 4

11

配置 servicePrincipleName 是一个很难用几句话来描述的话题也许这些文章会有所帮助:

很可能,您需要按以下方式配置它

<identity>
    <servicePrincipalName value="HOST/ServerName1:9990" />
</identity>

我们通常使用 userPrincipalName 而不是 servicePrincipalName,像这样

<identity>
  <userPrincipalName value="account@domain.com" />
</identity>
于 2009-08-18T07:30:20.040 回答
9

您希望向用户提供服务的用户的名称(在下面执行)。因此,如果您想在“本地网络”凭据下执行它,上述 XML 应如下所示:

<identity>
    <servicePrincipalName value="Local Network" />
</identity>
于 2009-08-18T07:09:45.323 回答
1

有关如何构建 SPN 的完整指南,请查看以下文章:

https://geertbaeten.wordpress.com/2013/06/03/kerberos-authentication-and-delegation-serviceprincipalnames/

http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx

这些更多是关于基础设施方面(ADDS),但第一部分对程序员也非常有用

于 2013-06-11T13:10:06.990 回答
0

使用 IIS 托管的 WCF 服务时。

我们使用“host/computerName”作为<servicePrincipalName />匿名连接。在您的 WCF 应用程序中,您可以设置应用程序池,例如“iis apppool\defaultAppPool”,该用户将是真正的连接用户。

下图中 /C??????DataService 为应用程序名称(“Tom's TestService1”) 应用程序池:C??????Pool 可以是“DefaultAppPool”,在“应用程序用户(透传认证)”的情况下)”,您将使用“ IIS AppPool\DefaultAppPool ”作为用户来授予特定资源的权限,例如文件或 sql server 连接字符串。

而且,即使使用匿名身份验证,您也可以将“表单授权”设置为 WCF 应用程序内的特定资源,例如“MasterSettings.svc”。

在此处输入图像描述

希望这可以帮助

于 2018-02-19T09:34:36.850 回答