我有一个在IIS 6.0下正常运行的网站:它使用Windows凭据对用户进行身份验证,然后在与访问数据库的服务进行通信时,它会传递凭据。
在IIS 7.0中,相同的配置设置不会传递凭据,并且数据库会被NT AUTHORITY \ ANONYMOUS命中。
有什么我想念的吗?我已经在我的IIS 7.0网站中关闭了ANONYMOUS访问权限,但是我无法使用它。
这些是我在IIS 6.0和7.0上使用的设置:
<authentication mode="Windows">
<identity impersonate="true">
从6.0更改为7.0?
答案 0 :(得分:8)
IIS7和IIS6.0之间发生了变化。我找到了一篇可能真正帮助你的博客文章(click here to see it)。
您是在集成模式还是经典模式下运行应用程序?从我看到的,将Impersonate属性设置为true应该显示500错误,并显示以下错误消息:
内部服务器错误。这是HTTP 错误500.19:请求的页面 无法访问因为相关 页面的配置数据是 无效。
以下是建议的解决方法:
解决方法:
1)如果您的申请不依赖 模仿请求用户 在BeginRequest和 AuthenticateRequest阶段(唯一的 模仿不是的阶段 可能在集成模式下),忽略 通过添加以下内容来解决此错误 你的应用程序的web.config:
<validation validateIntegratedModeConfiguration="false"
/&GT;
2)如果你的申请确实依赖 模仿BeginRequest和 AuthenticateRequest,或者你不是 当然,转到经典模式。
我希望这对了解IIS 7.0现在的工作方式很有用。
答案 1 :(得分:1)
您的IIS服务器是否设置为可信任SQLServer的委派?我之前使用WebDAV遇到过这种问题,我们必须让运行IIS的服务器信任文件服务器才能代表文件服务器进行身份验证。
答案 2 :(得分:0)
有趣......我遇到了相反的问题 - 无法将身份验证从客户端浏览器传递到Web服务器并通过防火墙传输到大型企业网络中的数据库。
我还觉得对数据库进行“端到端用户”身份验证是个坏主意,也存在潜在的安全风险。没有什么可以阻止最终用户加载SQL Query并直接连接到您的数据库,因此您最好锁定您的架构!
@Esteban - 澄清了我的在帮助你回答时没有用。
答案 3 :(得分:0)
通常,如果您正在进行这样的双跃点认证,除非第一次认证是基本的,否则通常会涉及Kerberos。
我会检查IIS 6服务器上的身份验证,并确保它在IIS 7上是相同的。
如果IIS 6框设置为Windows Integrated,则需要验证kerberos设置 - SPN,委派等。