【发布时间】:2011-02-03 12:15:41
【问题描述】:
请为非技术用户解释模拟。然后请在 ASP.NET 的上下文中解释。模仿是好是坏?我们是否在基于表单的身份验证的情况下使用它?
【问题讨论】:
标签: asp.net impersonation
请为非技术用户解释模拟。然后请在 ASP.NET 的上下文中解释。模仿是好是坏?我们是否在基于表单的身份验证的情况下使用它?
【问题讨论】:
标签: asp.net impersonation
您应该查看 Keith Brown 对 impersonation 的描述。这确实是一个 Windows 概念。
当您的应用程序使用表单身份验证 (FA) 时,IIS 进程将在 IIS 中特定用户设置的凭据下运行。
示例:如果您有一个名为 Bob 的用户使用 FA 和 IIS 设置登录以作为网络服务运行。 Bob 访问一个向另一台计算机发出 Web 服务调用的页面,另一台计算机将看到 IIS 用户而不是 Bob。您可以使用模拟让 Bob 以真正的 Windows 用户而不是网络服务的身份访问 Web 服务。
模仿不是邪恶的,但它可能会被滥用。您确实需要了解对整体安全模型的影响。这也是为开发人员调试创建大量工作的原因。如果您对尝试访问的资源(例如 Web 服务)没有管理员权限,则尤其如此。
【讨论】:
Web 应用程序通过 Web 服务器运行。该 Web 服务器以与您不同权限的用户身份运行。模拟允许应用程序以您(或计算机上具有不同权限的任何其他用户)的身份运行,就像您登录到运行它的计算机一样。
它实际上使事情变得非常好。它允许您以另一种方式授予/限制对计算机上受保护文件的访问权限。
是的,您可以使用表单身份验证来应用它(但您不必这样做)。
【讨论】:
ASP.NET 应用程序可以使用发出请求的用户的 Windows 身份(用户帐户)执行。模拟通常用于依赖 Microsoft Internet 信息服务 (IIS) 对用户进行身份验证的应用程序中。
默认情况下禁用 ASP.NET 模拟。如果为 ASP.NET 应用程序启用了模拟,则该应用程序将在其访问令牌 IIS 传递给 ASP.NET 的身份的上下文中运行。该令牌可以是经过身份验证的用户令牌,例如登录 Windows 用户的令牌,也可以是 IIS 为匿名用户提供的令牌(通常是 IUSR_MACHINENAME 身份)。
【讨论】: