0

我的网络应用程序具有以下设置..

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

我想了解的是,在身份验证和使用服务的各个方面都使用了哪些用户帐户。

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

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

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

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

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

还,,,

  • 文件系统使用什么身份?

  • “ApplicationPoolIdentity”对机器和文件系统有什么权限。

  • 最后,在 SQL Server Integrated security 的情况下,如果我的服务与 SQL Server 数据库通信,则将什么身份传递给 SQL Server。

提前致谢。

4

1 回答 1

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 Integrated security 的情况下,如果我的服务与 SQL Server 数据库通信,则将什么身份传递给 SQL Server。

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

于 2012-06-27T18:56:58.523 回答