【问题标题】:Configuring transport security for WCF为 WCF 配置传输安全性
【发布时间】:2009-03-21 08:15:29
【问题描述】:

我有一个托管 WCF 服务的 Windows 服务,以及作为客户端的另一台计算机上的 Web 服务。我将 nettcpbinding 设置为使用 Windows 身份验证传输安全性。我是否正确假设运行 web 服务的 Windows 用户必须有权访问另一台机器上的 WCF 服务?如果 webservice 在 NetworkService 下运行,是否可以使用它或者我需要设置一个新用户才能使用它?

【问题讨论】:

    标签: .net wcf


    【解决方案1】:

    是的,您需要设置另一个用户。网络服务是本地用户,不会存在于 WCF 主机上。 (确实如此,但它有不同的密码,因此不共享)

    您有几个选择 - 如果两台机器都在域中,您可以作为域用户运行 Web 应用程序池,或者如果您在工作组中,您可以在两台机器上创建相同的用户名/密码组合,然后将网站配置为在该帐户下运行。在任何一种情况下,您都需要通过发布来为新帐户分配正确的权限

    aspnet_regiis -ga MachineName\AccountName
    

    如果您在域和 kerberos 身份验证中,那么您还需要为新用户帐户设置 SPN

    setspn -A HTTP/webservername domain\customAccountName
    setspn -A HTTP/webservername.fullyqualifieddomainname domain\customAccountName 
    

    【讨论】:

    • 如果 IIS 不在域中,但 windows 服务在域中怎么办?
    【解决方案2】:

    有关网络服务的详细信息,请参阅 http://msdn.microsoft.com/en-us/library/ms684272(VS.85).aspx。将会发生的情况是,您的 WCF 客户端将尝试以 domain\computername$ 身份对托管服务的计算机进行身份验证。我个人更喜欢有一个特定的身份用于审计目的。

    【讨论】:

    • 最好作为网络服务运行,因为它不需要在网络上维护密码。机器帐户密码每 30 天更改一次,网络帐户密码在域策略下往往会过期,需要手动更改。
    猜你喜欢
    • 2011-09-24
    • 2011-10-07
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2011-08-27
    相关资源
    最近更新 更多