【问题标题】:Understanding impersonation permissions了解模拟权限
【发布时间】:2017-02-06 11:44:17
【问题描述】:

我有一个使用 Windows 身份验证和模拟的 ASP.NET Web 应用程序。这是 web.config 的相关部分:

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

应用程序代码现在尝试访问经过身份验证的用户有权访问的文件 (XDocument.Load)。这工作得非常好,直到今天我们开始收到以下异常:

System.UnauthorizedAccessException: Access to the path '...' is denied.

(很明显,管理员告诉我“服务器上没有任何变化”。)

我能够通过授予文件的应用程序池身份权限来“解决”问题。但是,我不明白为什么这解决了问题。

我的问题:如果使用模拟,为什么应用程序池身份仍然需要访问所使用的文件?模拟用户和应用程序池身份都需要访问权限吗?还是只有应用程序池标识?如果是后者,冒充的意义何在?

【问题讨论】:

    标签: c# asp.net iis impersonation


    【解决方案1】:

    网站使用w3wp.exe工作进程访问磁盘, 这本质上是应用程序池。为此设置的身份 应用程序池(例如 IIS Apppool\Site001)在某些情况下使用 磁盘。

    使用 Windows 身份验证时,应用程序池标识(例如 IIS Apppool\Site001) 用于某些访问,但 Windows 帐户 (例如 User1)用于其他访问。这取决于模仿 您正在使用的应用程序或框架的设置。 因此,您通常需要授予对应用程序的访问权限 池标识,以及每个 Windows 帐户(例如 User1、User2、User99) 需要访问您的网站。

    这里有来自Scott Forsyth Article 的一些引用。如果我理解正确,这篇文章应该会有所帮助。

    【讨论】:

    • 谢谢,读起来很有趣。所以我想我的问题的答案在于作者总结为“某些访问”和“其他访问”的细节。因此,+1 表示指向正确的方向,但没有复选标记,因为缺少这些细节。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多