如何在 web.config 中<身份模拟 = "true" > 处配置用户,以使用自己的权限执行某些代码(ASP.NET 核心)



当尝试创建目录,移动文件等时,我有访问拒绝错误。因此,我添加了(web.config)具有执行该功能的权限的模拟用户。

所以,在我的网上。配置我有当前代码:

<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>...</handlers>
<aspNetCore .../>
</system.webServer>
</location>
<system.web>
<identity impersonate="true" password="password123" userName="DOMAINuser123" />
</system.web>
</configuration>

在我的IIS中,DefaultAppPool池的Identity属性设置为ApplicationPoolIdentity

。现在我使用WindowsIdentity.RunImpersonated()来运行我的代码,创建文件夹等,我之前谈到的目的是使用配置的用户(DOMAINuser123),而不是当前登录的User.Identity,如DOMAINanyOtherCurrentUser:

WindowsIdentity.RunImpersonated(WindowsIdentity.GetCurrent().AccessToken, () => {
// create directory, move files, etc
});

问题是当我运行这段代码时,调用WindowsIdentity.Getcurrent(),我得到的用户是IIS配置IIS APPPOOLDefaultAppPool上的当前用户,而不是web中配置的用户。配置DOMAINuser123。为什么会这样呢?我应该如何使用这个用户配置在web.config?

你就是不能。

<system.web>下的任何内容仅适用于ASP。净4。ASP. x或更早版本。. NET Core不支持。

即使是ASP。净4。X,您应该基于应用程序池标识授予所有权限,而不是为了您自己的利益而依赖于模拟。

相关内容

最新更新