MVC5 Windows身份验证在IISExpress中有效,但不适用于IIS

时间:2019-03-07 19:42:24

标签: asp.net-mvc active-directory windows-authentication iis-8

有人问了同样的问题here,但对我来说这不是一个解决方案,我已经尝试了16个多小时。

我使用VS2013(Windows Server 2012 R2)为我的MVC5(ASP.Net Fw4.5)应用程序设置了Windows身份验证,这是我设置的主要步骤。

  • 我有两个控制器,我在Home控制器上放置了Authorize属性,About控制器上没有任何属性
  • 在项目属性上启用Windows身份验证
  • Web.Config如下

    <authentication mode="Windows" />
    <authorization>
       <allow users="?" />
    </authorization>
    
    <identity impersonate="false" />    
    
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
        <providers>
          <clear />
          <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
        </providers>
    </roleManager>
    <validation validateIntegratedModeConfiguration="false" />
    
  • IIS设置

  • 启用了匿名身份验证
  • 已启用Windows身份验证(提供程序:NTLM,协商)

使用这些配置,我的应用程序可以在IISExpress上完美运行,但是当我通过IIS访问它时,在给出正确的用户名/密码后,它会提示您输入登录名/密码,并且它会不断重复。 (我可以在没有Authorize属性的情况下访问About Controller)

我通过Fiddler检查了请求,该请求带来了一些有趣的东西。以下是我通过IIS访问时的响应

enter image description here

当我通过IISExpress访问时,我可以看到单个请求有三个条目,其中两个获得401,而第三个获得200

enter image description here

0 个答案:

没有答案