我对ASP.NET和IIS中各种不同的身份感到有点困惑。有人能告诉我应用程序池标识、匿名标识、ProcessModel标识、模拟标识和线程标识之间的确切区别吗?另外,请告诉我asp.net何时使用哪种身份?
发布于 2011-07-18 16:20:50
IIS是web服务器,可以托管ASP.NET以外的主动/被动内容(例如,经典的asp、php、静态文件等)。从IIS的角度来看,应用程序池标识决定了运行请求的用户。因此,当提供静态文件(html/image)时,此用户将用于访问磁盘中的文件。很多时候,IIS会将请求的实际执行交给不同的处理程序(例如,php-cgi或ASP.NET运行时等)。该运行时可以使用不同的标识来运行请求。在windows身份验证的情况下,IIS会将windows用户令牌传递给特定的处理程序,并且处理程序可以模拟当前请求以该经过身份验证的用户的身份运行。经典的ASP就是这样一个系统。在这些情况下,当用户未经过身份验证(即匿名)时,将使用匿名用户的身份。
在case ASP.NET中,默认配置将在应用程序池的标识下运行请求。但是,通过使用配置,您可以指示ASP.NET运行时模拟当前用户的标识。您还可以通过配置来配置在特定身份下模拟请求-通常在应用程序代码需要具有特定访问权限(如访问文件共享、网络资源等)的情况下执行此操作。
发布于 2011-07-19 21:11:16
进程模型标识仅限于IIS5.*。在IIS 6+中,其等效项是应用程序池标识。
创建工作进程时,进程模型/应用程序池标识用作进程标识。
允许匿名访问时,匿名标识将用作在辅助进程内处理传入请求的所有线程的线程标识。其他线程的身份取决于它们是如何创建的,并且对开发人员/最终用户是透明的。
当使用其他身份验证方法(如Windows身份验证)时,工作线程标识使用经过身份验证的用户标识(每个传入请求可能来自经过身份验证的用户,然后该用户的标识将用于处理该请求的线程)。
模拟要复杂得多,如
http://msdn.microsoft.com/en-us/library/aa376391(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ff647404.aspx
它改变了安全性上下文,这不是一个容易理解的Windows概念,您可以从优秀的书籍或实验中了解到这一点。
https://stackoverflow.com/questions/6729954
复制相似问题