2008-08-13 51 views
7

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

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

有什么我失踪了吗?我在我的IIS 7.0网站中关闭了匿名访问权限,但是我无法使其正常工作。

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

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

什么从6.0改为7.0?

回答

8

IIS7和IIS6.0之间已经发生了变化。我找到了一个可能真正帮助你的博客文章(click here to see it)。

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

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

这里是提出了解决办法:

解决方法:

1)如果您的应用程序无法在在的BeginRequest和 AuthenticateRequest阶段冒充请求用户 依靠 (中只有 阶段,其中冒充不是 可能在集成模式),忽略 此错误通过将以下内容添加到 应用程序的web.config:

<validation validateIntegratedModeConfiguration="false" 

/>

2)如果您的应用程序依靠的BeginRequest 模拟和 AuthenticateRequest,或者你是不是 肯定,移到经典模式。

我希望这对了解IIS 7.0的工作原理非常有用。

+0

@Maxim,这对我来说不再是问题,但它确实有助于理解问题。谢谢! – 2009-02-23 18:03:17

0

有趣的...我有相反的问题 - 不能够得到验证,从客户端浏览器的大型企业网络中防火墙上通过,通过网络服务器和到数据库。

我也觉得对数据库的“端到端用户”身份验证是一个坏主意和潜在的安全风险。没有什么能够阻止最终用户加载SQL查询并直接连接到数据库,所以最好让您的模式被锁定!

@Esteban - 澄清我的不是很有用,可以帮助你回答。

0

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

我将在IIS 6服务器上检查认证,并确保它在IIS 7

如果IIS 6框设置为Windows集成一样,那么你需要验证的Kerberos设置 - 的SPN ,代表团等

1

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