环境是IIS 7集成管道,ASP.NET 4.0。我有一个配置了无匿名身份验证和Windows身份验证的.aspx页面:
<location path="auth/windows">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
当我请求该页面时,会发生普通的Windows身份验证(NTLM / Negotiate)挑战响应,最终返回该页面。
我有一个HttpModule,在其中处理PostAuthorize事件。如预期,此事件仅在挑战 - 响应身份验证成功并授权访问页面后才会引发。
但是,Request.IsAuthenticated属性为false;而HttpContext.Current.User.Identity反映未经身份验证的用户(.Name返回空字符串)。有趣的是,Request.ServerVariables ["LOGON_USER"]确实返回已认证的Windows用户的值。
我本以为一旦用户得到身份验证(也包括授权),请求就会反映已经过身份验证;请求的User / Identity将被正确设置。
你对为什么出现这种情况有什么想法吗?
谢谢,
唐尼