【问题标题】:ASP.NET Windows Authentication Not Working/Not Accepting CredentialsASP.NET Windows 身份验证不起作用/不接受凭据
【发布时间】:2012-09-13 06:24:18
【问题描述】:

几周以来,我一直试图通过Google 和阅读 SO 来解决这个问题,但运气不佳,所以我想我最终会尝试问自己。

我正在我们的 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 身份验证和这个问题有点陌生。在这一点上,我只是不确定接下来要尝试或检查什么,所以任何建议都会有所帮助。谢谢。

【问题讨论】:

标签: asp.net windows-authentication


【解决方案1】:

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

话虽如此,但您有几个问题。

您的 web.config 中应该有一个 &lt;authentication mode="Windows" /&gt; 元素

您应该决定是否希望应用在用户上下文中运行,在这种情况下,您还需要一个&lt;identity impersonate="true"/&gt; 标签。如果不是,则应为 false(尽管这是默认设置)。

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

【讨论】:

  • 感谢您的反馈。我确实按照您的建议设置了身份验证模式,并且仅尝试通过 IE 访问该站点。为了测试,我已经注释掉了授权部分。我希望该应用程序在用户的上下文中运行,但我不太确定您所说的“`标签”是什么意思。到目前为止,我仍然收到相同的重复凭据提示。有趣的是,以前的用户推荐的 DelegConfig 工具确实可以在本地使用 Windows 身份验证。所以我要把我的 web.config 和工具的比较一下,看看有没有什么明显的地方。
  • 这个答案解决了我的问题——我试图在 Firefox (39.0.3) 中使用 Windows 身份验证,并且无论我做什么都得到“需要身份验证”对话框。我使用 MSIE 运行我的项目并且身份验证工作正常。
【解决方案2】:

以防万一,对我来说,问题是我将应用程序池留在经典模式下,以便尝试使用 NTFS 权限。我从来没有让它工作,但是一旦我将它切换回集成模式,我可以使用&lt;allow&gt;&lt;deny&gt; 标签来配置特定用户的访问权限。

【讨论】:

    【解决方案3】:

    我知道这是一个有点老的话题,但我遇到了完全相同的问题。原来我有使用身份的 AppPool:ApplicationPoolIdentity 而不是 NetworkService。一旦我切换它(在 IIS7.5 中的高级设置下),我不再让服务器提示输入其他凭据,并且传递工作完美。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2018-12-05
      • 2014-12-15
      • 2023-04-03
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2010-12-08
      • 2023-04-11
      相关资源
      最近更新 更多