7

我有一个在 IIS 6.0 下可以正常工作的网站:它使用 Windows 凭据对用户进行身份验证,然后在与访问数据库的服务交谈时,它会传递凭据。

在 IIS 7.0 中,相同的配置设置不传递凭据,并且数据库被 NT AUTHORITY\ANONYMOUS 命中。

有什么我想念的吗?我已经在我的 IIS 7.0 网站中关闭了匿名访问,但我无法让它工作。

这些是我在 IIS 6.0 和 7.0 上使用的设置:

<authentication mode="Windows">
<identity impersonate="true">

从 6.0 到 7.0 发生了什么变化?

4

4 回答 4

8

IIS7 和 IIS6.0 之间发生了变化。我为您找到了一篇可能对您有实际帮助的博文(点击此处查看)。

您是在集成模式还是经典模式下运行您的应用程序?从我所见,将 Impersonate 属性设置为 true 应该会显示 500 错误,并显示以下错误消息:

内部服务器错误。这是 HTTP 错误 500.19:无法访问请求的页面,因为该页面的相关配置数据无效。

这是建议的解决方法:

解决方法:

1) 如果您的应用程序不依赖于在 BeginRequest 和 AuthenticateRequest 阶段(在集成模式下无法模拟的唯一阶段)模拟请求用户,请通过将以下内容添加到应用程序的 web.config 来忽略此错误:

<validation validateIntegratedModeConfiguration="false"

/>

2) 如果您的应用程序确实依赖于 BeginRequest 和 AuthenticateRequest 中的模拟,或者您不确定,请转到经典模式。

我希望这有助于了解 IIS 7.0 现在的工作原理。

于 2008-11-06T00:13:52.377 回答
1

您的 IIS 服务器是否设置为受 SQLServer 委派信任?我之前在使用 WebDAV 时遇到过这种情况,我们必须让运行受文件服务器信任的 IIS 的服务器代表文件服务器进行身份验证。

于 2008-10-23T02:38:35.910 回答
0

有趣...我有相反的问题 -无法从客户端浏览器通过网络服务器并通过防火墙传递到大型企业网络内的数据库中的身份验证。

我还觉得对数据库的“端到端用户”身份验证是一个坏主意,并且存在潜在的安全风险。没有什么可以阻止最终用户加载 SQL 查询并直接连接到您的数据库,因此您最好锁定您的架构!

@Esteban - 澄清了我在帮助您回答方面不是很有用。

于 2008-08-13T22:41:29.613 回答
0

通常,如果您正在执行这样的双跳身份验证,则通常会涉及 Kerberos,除非第一个身份验证是 Basic。

我会检查 IIS 6 服务器上的身份验证,并确保它在 IIS 7 上相同。

如果 IIS 6 框设置为 Windows Integrated,那么您需要验证 kerberos 设置 - SPN、委派等。

于 2008-09-17T06:33:50.457 回答