Cassini无视Win NT角色授权,IIS 7.5一切正常

时间:2011-09-09 01:54:52

标签: asp.net asp.net-mvc impersonation roleprovider

我有一个在我的本地开发盒(Win7)和登台服务器(W2k8r2)上运行的ASP.NET MVC 3应用程序。在启用ASP.NET Windows授权安全性之前,应用程序在两种环境中都能正常运行。

保护网络应用程序后,它会继续在登台服务器上正常运行,但在我的本地开发框中生成401.2访问被拒绝。我能看到的唯一重要区别是本地开发盒,我通过Visual Studio使用Cassini,而服务器是IIS7.5。

正在使用Windows授权+模拟。什么可能导致卡西尼生成这些401.2访问被拒绝?

Web.config是:

<system.web>
   <authentication mode="Windows" />
   <identity impersonate="true" />
   <!-- replication of system.webServer security settings for cassini which doesn't process them... -->
   <authorization>
       <allow roles=".\Test Application - Users" />
       <deny users="*" />
   </authorization>
</system.web>
<system.webServer>
   <validation validateIntegratedModeConfiguration="false" />
   <modules runAllManagedModulesForAllRequests="true" />
   <security>
      <authorization>
          <remove users="*" roles="" verbs="" />
          <add accessType="Allow" users="" roles="Test Application - Users" />
      </authorization>
  </security>

仅供参考。相关用户位于每个系统的“测试应用程序 - 用户”Windows安全组中。

解决方案

开发框的根本问题是:

  1. Cassini不支持身份模拟
  2. 虽然用户已添加到相关的NT组,但他们没有注销/打开,因此与其Windows令牌关联的组SID尚未刷新
  3. 如果卡西尼支持假冒,我怀疑这会是一个问题,因为在假冒情境中会建立一个新的令牌。感谢@ x0n指向正确的方向。

2 个答案:

答案 0 :(得分:2)

我不完全确定,但我不认为卡西尼可以冒充(然而,快递可以。)

答案 1 :(得分:0)

在解决方案资源管理器窗格中选择Web项目并按F4 。 (不是右键单击+属性,这是不同的) - 这将显示属性窗格

在属性窗格中,然后设置: Windows身份验证:启用 匿名身份验证:已禁用

运行你的项目,Happy Days!