是否可以在 IIS 的 ASP.NET Core 运行 中访问匿名用户身份?
Is it possible to get an access to anonymous user identity in ASP.NET Core running in IIS?
借助 asp.net vPrev,我们能够将应用程序池帐户和访问帐户分开以进行匿名访问("anonymous user identity",IUSR 为默认值)。这对保护应用程序非常有帮助:您可以确定不会为匿名用户提供高级访问权限,即使应用程序池帐户具有高权限也是如此。
是否可以对 ASP.NET 核心应用程序执行相同的操作?根据我对核心执行模型的理解,这是不可能的,因为 IIS 仅充当代理。我说的对吗?
可能有一些方法可以做同样的事情,但使用另一种方法?主要目标是能够在应用程序池和匿名上下文之间切换上下文。举个简单的例子:当应用程序启动时,我们可以 read\write\do 使用应用程序池帐户,但在请求上下文中,我们将使用匿名用户身份进行操作。
不喜欢回答自己的问题,但主题是可能的。您可以从 IIS SDK 获取匿名用户上下文:
using Microsoft.Web.Administration // from Microsoft.Web.Administration.dll, nuget microsoft.web.administration
// ....
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", siteName);
string userName = (string)anonymousAuthenticationSection["userName"];
string pwd = (string)anonymousAuthenticationSection["password"];
当然这不是很安全(必须 运行 你的应用程序在可以访问 IIS 的帐户下)并且你需要在配置中的某个地方保留站点名称,但它有效。
借助 asp.net vPrev,我们能够将应用程序池帐户和访问帐户分开以进行匿名访问("anonymous user identity",IUSR 为默认值)。这对保护应用程序非常有帮助:您可以确定不会为匿名用户提供高级访问权限,即使应用程序池帐户具有高权限也是如此。
是否可以对 ASP.NET 核心应用程序执行相同的操作?根据我对核心执行模型的理解,这是不可能的,因为 IIS 仅充当代理。我说的对吗?
可能有一些方法可以做同样的事情,但使用另一种方法?主要目标是能够在应用程序池和匿名上下文之间切换上下文。举个简单的例子:当应用程序启动时,我们可以 read\write\do 使用应用程序池帐户,但在请求上下文中,我们将使用匿名用户身份进行操作。
不喜欢回答自己的问题,但主题是可能的。您可以从 IIS SDK 获取匿名用户上下文:
using Microsoft.Web.Administration // from Microsoft.Web.Administration.dll, nuget microsoft.web.administration
// ....
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", siteName);
string userName = (string)anonymousAuthenticationSection["userName"];
string pwd = (string)anonymousAuthenticationSection["password"];
当然这不是很安全(必须 运行 你的应用程序在可以访问 IIS 的帐户下)并且你需要在配置中的某个地方保留站点名称,但它有效。