ASP.Net Web 表单应用程序未在服务器上通过 Windows 身份验证进行身份验证 - 模拟失败

ASP.Net Web Forms App does not authenticate on server with Windows Authentication - fails impersonate

我正在 运行 宁 ASP.NET (VB) 4.6.1 Web 表单应用程序。我正在使用 Windows 身份验证 ( <authentication mode="Windows" /> ).
该方案是允许任何经过身份验证的 Windows 用户访问登录页面。 “Check Admins”活动目录安全组中的任何用户都应该可以访问 Admin 子文件夹中的任何页面。

根 web.config 有:

<authorization>
  <deny users="?" />
</authorization>

管理员 web.config 有:

  <authorization>
    <allow roles="domain\Check Admins" />        
    <deny users="*" />
  </authorization>

在着陆页上,我列举了用户拥有的所有角色:

test &= "<br/><h3>You have the following roles:</h3>"
For Each r In Roles.GetRolesForUser()
    test &= r & "<br/>"
Next

我经历了几次设置和 web.config 更改(大部分概述如下)。我可以让它在我的开发 PC 上按预期工作,但在部署到测试服务器 运行ning Windows 2008 R2 和 IIS 7.5 时无法让它工作。有时我可以让网站出现,但前提是我去 http://localhost。当我使用完全限定名称时它不会出现:http:// test.mysite.net

以下是我尝试过的更改和设置:

当 运行ning 没有模拟时:

开发机器:

一切正常。

部署到带有 IIS 设置的服务器时

IIS 7.5 服务器(http://localhost):

IIS 7.5 服务器(FQDN:http://Test.mysite.net): 永无止境的安全挑战

正在更改服务器上的 IIS 设置

两个服务器站点return HTTP 错误 500.24 - 内部服务器错误 检测到 ASP.NET 设置不适用于集成托管管道模式。

在开发机器上添加 <identity impersonate="true"/>

HTTP 错误 500.24 - 内部服务器错误 检测到 ASP.NET 设置不适用于集成托管管道模式。

最可能的原因: • system.web/identity@impersonate 设置为 true.

添加

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>

上面的模拟给出:

开发机:(与第一个运行相同)

IIS 7.5 服务器(本地主机):

IIS 7.5 服务器(FQDN:http://Test.mysite.net): 永无止境的安全挑战

我花了几个小时梳理这里和 Google 上其他地方的帖子。我不知道这是 .Net 4.5+ 的问题还是我只是错过了什么。我怎样才能让它正确读取角色并对文件夹进行身份验证?

为什么当我尝试使用完整 URL 访问页面时,它是否完全无法通过身份验证?

对于其中的 90%,事实证明 Active Directory 服务器的证书已过期,因此拒绝对来自 Web 服务器的请求进行身份验证。奇怪的是,它确实验证了登录 PC 上 Windows 帐户的所有用户。我发布这个以防其他人遇到类似的问题。 虽然,我仍然无法弄清楚为什么在服务器本身上,导航到完整 URL 仍然无法进行身份验证,但是转到 Localhost 就可以正常工作。