2012-09-20 49 views
5

我一直试图通过Google来解决这个问题几个星期,现在通过阅读并且没有太多的运气,所以我想我最终会试着问自己。ASP.NET Windows身份验证不能正常工作/不接受凭证

我在我们的Intranet上设置了一个非常非常简单的ASP.NET网站,为内部用户生成一些信息。我使用的是Windows身份验证,而不是匿名访问,因为根据用户点击的网站我将生成不同的信息。

长话短说,这在我开发应用程序的本地Windows 7机器上完美测试。然而,从我想要它驻留的Windows 2008 R2 server,当我点击该网站时,我会弹出一个询问我的凭据的信息,即使我输入了它,也会一次又一次地询问我。无论我是远程还是本地点击该网站,都会发生这种情况。如果我尝试使用匿名访问,我可以通过两种方式访问​​网站,但由于我无法识别用户,因此无法生成我想提供的信息。

注:

  1. 在IIS中,我有Windows身份验证和ASP.NET模拟 为站点启用。其他一切都被禁用。

  2. 为了搞清楚,我目前已经设置了web.config来允许所有用户,并且不会拒绝任何用户。

  3. 我使用它的主机/ URL是toolName.organization.local
  4. 我而言,这是居住在不同的域,那么我的远程用户2008 R2服务器管理员用户的一个问题,我正在进行测试,但它又不在本地工作。
  5. 在AppHost文件中,我当前启用了WindowsAuthentication。

      <windowsAuthentication enabled="true"> 
          <providers> 
           <add value="Negotiate" /> 
           <add value="NTLM" /> 
          </providers> 
          </windowsAuthentication> 
    

诚然,我通常使用窗体身份验证这台服务器为我们所有的其他内部网站上,所以我有点新Windows身份验证和这个问题。在这一点上,我只是不确定接下来要尝试或检查什么,所以任何建议都会有帮助。谢谢。

+1

你试试这个诊断工具:http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/delegconfig-delegation-configuration-reporting-tool.aspx?忽略发布日期,有一个v7.0/7.5版本 – MatthewMartin

回答

2

首先,您应该认识到,Windows传递身份验证仅适用于Internet Explorer,然后仅当该站点位于受信任的站点或Intranet站点安全组中时。 Firefox,Chrome等。将始终提示输入凭据。

话虽如此,你有几个问题。

你应该有一个<authentication mode="Windows" />元素在你的web.config

你应该决定是否要应用在用户的上下文中运行,在这种情况下,您还需要一个<identity impersonat="true"/>标签。如果不是,它应该是false(尽管这是默认值)。

如果站点本身完全由Windows身份验证保护,则不需要在web.config中拥有任何授权规则。

+0

感谢您的反馈。 我有一个身份验证模式设置为你的建议,只有尝试通过IE浏览器访问该网站。 我注释掉测试的缘故授权部分。 我想应用程序在用户的上下文中运行,但我不太清楚你的意思是“一个'标签。” 到目前为止,我仍然收到相同的重复凭证提示。有趣的是,之前用户推荐的DelegConfig工具可以在本地使用Windows身份验证。所以我要比较我的web.config和工具的web.config,看看有没有什么明显的。 – user1032943

+0

这个答案解决了我的问题 - 我尝试使用Windows身份验证与Firefox(39.0.3),并获得“需要身份验证”对话框,无论我做了什么。我用MSIE运行我的项目并且验证正常工作。 –

8

我知道这是一个稍老的话题,但我有这个完全相同的问题。原来我有AppPool使用Identity:ApplicationPoolIdentity而不是NetworkService。一旦我切换(在IIS7.5中的高级设置下),我不再让服务器提示输入额外的凭证,并且传递完美。

希望有帮助!

0

以防万一它是有帮助的,对我来说,问题是,我已经离开了在经典模式下我的应用程序池,以尽量使用NTFS权限。我从来没有说要工作,但一旦我切换回集成模式,我可以用<allow><deny>标签配置特定用户的访问。

相关问题