【问题标题】:Is it possible to get an access to anonymous user identity in ASP.NET Core running in IIS?是否可以访问在 IIS 中运行的 ASP.NET Core 中的匿名用户身份?
【发布时间】:2017-09-07 04:31:30
【问题描述】:
使用 asp.net vPrev,我们能够将应用程序池帐户和访问帐户分开以进行匿名访问(“匿名用户身份”,IUSR 为默认值)。这对保护应用程序非常有帮助:您可以确定不会为匿名提供高级访问权限,即使应用程序池帐户具有高权限。
对于 ASP.NET Core 应用程序有什么方法可以做同样的事情吗?根据我对核心执行模型的理解,这是不可能的,因为 IIS 只是充当代理。我说的对吗?
可能有一些方法可以做同样的事情,但用另一种方法?主要目标是能够在应用程序池和匿名上下文之间切换上下文。举个简单的例子:当应用程序启动时,我们可以使用应用程序池帐户读取\写入\做任何事情,但在请求上下文中,我们将使用匿名用户身份进行操作。
【问题讨论】:
标签:
security
iis
asp.net-core
identity
anonymous
【解决方案1】:
不喜欢回答自己的问题,但主题是可能的。您可以从 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 的帐户下运行您的应用程序),并且您需要将站点名称保留在配置中的某个位置,但它可以工作。