ASP.NET 2.0中的alwaysFlowImpersonationPolicy


才读完微软ASP.NET产品组项目经理Stefan Schackow 撰写的《Professional ASP.NET 2.0 Security, Membership, and Role Management》的第二章,就觉得买书花的钱已经值了。

ASP.NET中身份的问题很复杂,我了解的知识大都来自Keith Brown的“A Tale of Three Security Contexts in ASP.NET”一文。Stefan Schackow 在第二章“Security Processing for Each Request”中,清晰地勾画出在每次请求中,特别是在与认证和授权模块相关的事件里,在不同的IIS安全设置,配置文件设置,以及是否部署在UNC共享目录里等各种情形下,当前操作系统线程的身份,IIS的身份令牌,当前托管线程的CurrentPrincipal,以及HttpContext.Current.User身份,是如何配置以及演变的。

其中特别提到了在异步操作中,身份是如何配置的,应该如何手工流动,但他指出ASP.NET 2.0 提供了把处理当前请求的操作系统线程的身份自动流动到异步线程上去的功能,只要把%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet.config文件中的2个节点改成

<legacyImpersonationPolicy enabled=”false“/>
<alwaysFlowImpersonationPolicy enabled=”true“/>

即可!