Kestrel + .NET Core (Windows) 的推荐身份/用户

Exo*_*omp 5 .net-core kestrel-http-server asp.net-core asp.net-core-1.1 asp.net-core-2.0

将 Kestrel 与 IIS 一起使用时,您可以定义应用程序池和身份(用户)。默认身份是“ApplicationPoolIdentity”,但可以是以下之一或自定义用户:

在此处输入图片说明

当应用程序运行时,Kestrel 在您在 IIS 中定义的标识下运行:

在此处输入图片说明

但是,当在代理服务器(例如 nginx(或独立))后面使用 Kestrel 时,推荐使用的“身份”(用户)是什么以及如何将其与 Kestrel 一起使用?

Chr*_*att 2

你在这里似乎很困惑。您所说的是应用程序池标识(窗口甚至被标记为该标识)。应用程序池本质上是为您的网站提供服务的进程。进程在帐户下运行,无论是系统帐户、服务帐户、网络帐户还是用户帐户。进程运行的帐户(显然)决定了它的权限和访问权限。默认情况下,在 IIS 中,应用程序池运行在 下ApplicationPoolIdentity,这只是一个本地服务帐户,权限相对有限。

这一切都与Kestrel无关。Kestrel 只是一个简单的 Web 服务器。IIS 仅充当反向代理。它接受请求,将请求交给 Kestrel,从 Kestrel 获取响应,然后将该响应发送回客户端。IIS 为您提供安全和管理层,而 Kestrel 只是处理服务请求的繁重工作。

因此,IIS 几乎可以与任何可以充当反向代理的 Web 服务器互换,例如 Nginx。这会以同样的方式工作。再说一次,你不能用 Kestrel定义任何东西。它只是咕噜咕噜地服务反向代理转发它的请求。它不知道也不关心反向代理是什么,这并不重要。

也就是说,在任何一种情况下,都没有“推荐身份”可供使用。这是您负责做出决定的安全方面。IIS 有一个默认服务帐户,Nginx 可能也有一个。(我没有在 Windows 上运行 Nginx,但在 Linux 上,它确实在 . 下运行nginx:nginx。)对于某些人来说,这很好。其他人决定使用专用网络帐户或自定义本地服务帐户。还有一些人决定在实际用户帐户下运行。每个选项都有多种原因,并且没有一种“正确”的方法,只有适合您的应用程序、服务器、网络和组织的“正确”方法。没有人可以为您做出这些决定。