asp.net - IIS 仍然通过池身份访问资源,而不是模拟用户

标签 asp.net iis impersonation pool

我已经走到尽头了!

在 Server 2003 上,我有一个配置为使用基本身份验证的 INTRANET 应用程序和一个具有专用帐户的应用程序池。

在我指定的 web.config 中

   <authentication mode="Windows" />
   <identity impersonate="true"/>

在 View 中(MVC 3):

<p>Environment.UserName (authentication): @Environment.UserName</p>
<p>User.Identity.Name (asp.net account): @User.Identity.Name</p>

这表明我的域帐户已按预期提取(我必须通过对话框登录应用程序)。太棒了!

但是等等!当应用程序访问文件系统或 sql server(另一台机器)时,它不会通过我的域帐户访问,而是通过池帐户访问。我可以看到通过探查器进入的 SQL 登录。我也通过文件系统权限验证了这一点。如果我将池设置为使用 NETWORK SERVICES,我将无法创建本地文件,即使我使用的域帐户具有权限并且可以交互方式创建。如果我授予 NS 帐户对这些文件的权限,它就可以工作。所以我知道一个事实,即使 View 确认我正在模拟,资源请求也不会使用该帐户,而是使用池的帐户。

如果我关闭模拟,我会按预期看到池 ID。

根据我的阅读,我应该能够使用基本身份验证来访问远程 sql server,对吧?本地盘就更不用说了。我只是不明白!

如有任何建议,我们将不胜感激。

谢谢!

最佳答案

模拟以 IIS 结束。要继续将用户凭据传递到第二个远程服务器,您需要启用 Web 服务器和文件服务器之间的委派。这是 Active Directory 中计算机之间的位标志设置。

关于asp.net - IIS 仍然通过池身份访问资源,而不是模拟用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565796/

相关文章:

asp.net-mvc - 使用 Windows 身份验证在 MVC 应用程序中模拟 Active Directory 用户

c# - Mysql 连接的连接字符串

asp.net - 我怎样才能为单个 HTML 页面添加一点点活力,同时具有最小的依赖性和最大的可移植性?

iis - 使用 LogParser 查询带有额外字段的 IIS 日志

ASP.NET PowerShell 模拟

c# - .Net 类来控制远程机器上的服务?

c# - ASP.NET 5 (vNext) 网络项目 : library conflict upgrading from beta4 to beta6

c# - 如何访问中继器内的 gridview 事件和 gridview

ASP.NET IIS错误

windows - 无法连接到运行 IIS 的服务器上的 Localhost