在IIS上运行的WCF应用程序使用哪些标识?

时间:2012-06-27 13:04:11

标签: wcf iis windows-server-2008 application-pool

我的网络应用程序设置如下..

  • 在IIS7上托管的WCF应用程序
  • 基本HTTP绑定 - SecurityMode = TransportCredentialOnly和ClientCredentialType = Windows。
  • .Net 4.0
  • 该应用使用“ApplicationPoolIdentity”在.Net 4.0应用程序池中运行。
  • IIS使用“Application Pass Through”身份验证连接到文件系统。
  • 客户端和服务都在IIS下运行 - 即客户端是webste,服务是IIS托管的WCF服务。

我想了解的是,在进行身份验证和使用服务时,在各个点使用了哪些用户帐户。

  • 据我所知,ApplicationPoolIdentity是为每个创建的应用程序池生成的内置Windows帐户 - 这是w3wp.exe将为该网站运行的帐户吗?

  • 在clent和server之间没有指定凭据 - 这是最有趣的一点。当我的客户端连接到我的WCF应用程序时,使用什么标识来对服务进行身份验证。我假设应用程序池托管客户端网站的应用程序池标识?

  • 如果是这样,如果这两个网站使用两个不同的应用程序池会发生什么?

  • 或者该服务是否只需要计算机(或域)上的有效帐户,并且足以进行身份​​验证?

  • 如果我将应用程序池更改为使用特定用户帐户,这是否会改变任何内容?我认为只要客户端通过有效的机器帐户就可以了吗?

另外,,,

  • 文件系统使用什么标识?

  • “ApplicationPoolIdentity”对计算机和文件系统有哪些权限。

  • 最后,在SQL Server集成安全性的情况下,如果我的服务与SQL Server数据库进行通信,则会将身份传递给SQL服务器。

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

据我所知,ApplicationPoolIdentity是内置的Windows   为每个创建的应用程序池生成的帐户 - 就是这个   w3wp.exe将为该网站运行的帐户?

是的。这称为虚拟帐户,允许IIS为每个已定义的应用程序池创建唯一帐户,还会创建表示应用程序池名称的安全标识符。请记住,这不是真正的用户帐户。有关它的更多信息,您可以查看以下链接:http://technet.microsoft.com/en-us/library/dd548356.aspx

  

在clent和server之间没有指定凭据 - 这是   最有趣的一点。当我的客户端连接到我的WCF时   应用程序用于对服务进行身份验证的身份。一世   假定应用程序池托管客户端的应用程序池标识   网站?

是,同样的规则适用于使用本地服务帐户或网络服务帐户。

  

如果是这样,如果这两个站点使用两个不同的应用程序会发生什么   池?

没有,除非您提升这些应用程序池标识的权限。

  

或者该服务是否只需要机器上的有效帐户(或   域名),这足以进行身份​​验证吗?

然后,您将不会使用为应用程序池创建的默认虚拟帐户。相反,您将这些应用程序池与现有的Windows帐户相关联。请记住这些Windows /域帐户拥有的权限类型。

  

如果我更改了应用程序池以使用特定的用户帐户呢   这有什么改变吗?只要客户通过了,我就再次假定   有效的机器帐户可以吗?

只要这些帐户根据您的需要拥有权限,它就会正常工作。

  

文件系统使用什么标识?

使用更多详细信息定义文件系统的含义;你在申请目录中严格提到了吗?

  

“ApplicationPoolIdentity”对计算机有什么权限   以及文件系统。

ApplicationPoolIdentity是Users和IIS_IUSRS组的成员,因此将“继承”前面提到的组的权限。

  

最后在SQL Server集成安全的情况下,身份是什么   如果我的服务与SQL Server通信,则传递给SQL服务器   数据库中。

ApplicationPoolIdentity或您已配置为由应用程序池使用的帐户。