6

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

4

3 回答 3

10

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

希望有帮助!

于 2012-10-12T17:47:37.763 回答
4

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

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

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

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

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

于 2012-09-21T18:15:26.147 回答
0

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

于 2013-07-21T01:21:21.767 回答