ASP.NET Windows身份验证不工作/不接受凭据

时间:2012-09-20 20:14:00

标签: asp.net windows-authentication

我一直试图通过Google解决这个问题几个星期并阅读SO,但没有太多运气,所以我想我终于试着问自己了。

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

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

注意:

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

  2. 为了弄清楚,我目前将web.config设置为允许所有用户,并且我不否认任何用户。

  3. 我正在使用的主机/网址是toolName.organization.local
  4. 我担心这是一个问题,2008 R2服务器管理员用户位于不同的域,然后是我正在测试的远程用户,但它也无法在本地运行。
  5. 在AppHost文件中,我目前启用了WindowsAuthentication。

                <windowsAuthentication enabled="true">
                <providers>
                    <add value="Negotiate" />
                    <add value="NTLM" />
                </providers>
                </windowsAuthentication>
    
  6. 不可否认,我通常在此服务器上为所有其他内部站点使用表单身份验证,因此我对Windows身份验证和此问题有点新鲜。在这一点上,我只是不确定下一步要做什么或检查,所以任何建议都会有所帮助。感谢。

3 个答案:

答案 0 :(得分:10)

我知道这是一个稍微陈旧的话题,但我有同样的问题。事实证明我使用Identity:ApplicationPoolIdentity而不是NetworkService来使用AppPool。一旦我切换它(在IIS7.5中的高级设置下),我不再让服务器提示输入额外的凭据,并且传递工作完美无缺。

希望有所帮助!

答案 1 :(得分:3)

首先,您应该意识到Windows直通身份验证仅适用于Internet Explorer,并且只有当该站点位于受信任站点或Intranet站点安全组中时才能使用。 Firefox,Chrome等将始终提示输入凭据。

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

您的web.config

中应该有一个<authentication mode="Windows" />元素

您应该决定是否希望应用在用户的上下文中运行,在这种情况下,您还需要<identity impersonate="true"/>标记。如果不是,它应该是假的(虽然这是默认值)。

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

答案 2 :(得分:0)

为了防止它有用,我遇到的问题是我将应用程序池保留在经典模式下,以便尝试使用NTFS权限。我从来没有这样做,但一旦我将其切换回集成模式,我可以使用<allow><deny>标签配置特定用户&#39;访问。