【问题标题】:Cassini ignoring Win NT role authorization, IIS 7.5 all okCassini 忽略 Win NT 角色授权,IIS 7.5 一切正常
【发布时间】:2011-11-13 10:59:21
【问题描述】:

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

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

正在使用 Windows 授权 + 模拟。什么可能导致 Cassini 生成这些 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 没有被刷新

如果 Cassini 支持模拟,我怀疑这会是一个问题,因为会在模拟上下文中建立一个新的令牌。感谢@x0n 指出正确的方向。

【问题讨论】:

  • 我不完全确定,但我不认为 cassini 可以模仿(但是 iis express 可以。)
  • @x0n - 你似乎是对的。在下面发布了与您的评论相关的我自己的问题的答案
  • 好吧,如果你不介意,我会把我的评论作为你可以接受的答案来骗取分数;)

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


【解决方案1】:

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

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

运行您的项目,Happy Days!

【讨论】:

    【解决方案2】:

    我不完全确定,但我不认为 cassini 可以冒充(不过 iis express 可以。)

    【讨论】:

    • 是的,似乎是这样。开发盒上的根本问题原来是:(1)。 Cassini 不支持身份模拟,并且 (2) 虽然用户已添加到相关 NT 组,但他们尚未注销/登录,因此与其 Windows 令牌关联的组 SID 未刷新如果 Cassini 支持模拟我怀疑这会是一个问题,因为会在模拟上下文中建立一个新的令牌。
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2016-10-10
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多