servicePrincipalName应该有什么价值?

时间:2009-08-18 06:42:52

标签: c# .net wcf wcf-configuration

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

我需要为我的服务端点

的servicePrincipalName设置一个值

我正在看这个MSDN article,但仍然无法弄清楚

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

我的servicePrincipalName具体应该是什么?

我试着,没有快乐:

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

4 个答案:

答案 0 :(得分:9)

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

<identity>
    <servicePrincipalName value="Local Network" />
</identity>

答案 1 :(得分:9)

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

最有可能的是,您需要按以下方式配置

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

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

<identity>
  <userPrincipalName value="account@domain.com" />
</identity>

答案 2 :(得分: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),但第一部分对程序员来说非常有用

答案 3 :(得分:0)

使用IIS托管的WCF服务时。

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

在下图中 / C ?????? DataService是应用程序名称(“Tom's TestService1”) 应用程序池:C ????池可以是“DefaultAppPool”,对于“应用程序用户(传递身份验证)”,您将使用“ IIS AppPool \ DefaultAppPool ”作为用户授予特定资源的权限,如文件或SQL Server连接字符串。

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

enter image description here

希望这会有所帮助