2

我有一个 asp.net Web 应用程序,它在域中的 Windows XP 机器上运行良好。我将它移植到 Windows 7 独立机器上。该应用程序使用一个调用 sql server 的 Web 服务。Web 服务器 (IIS 7.5) 和 SQL Server 位于同一台独立计算机上。

我为网站和 Web 服务启用了 Windows 身份验证。Web 服务使用受信任的连接连接字符串。Web 服务凭据使用 System.Net.CredentialCache.DefaultCredentials。我注意到调用后用户名、密码和域名都是空白的!Web 服务和网站使用具有 NetworkServices 标识的“经典 .NET AppPool”。

我在 Web 服务的数据库调用中收到异常“NT AUTHORITY\ANONYMOUS LOGON”。我假设它与空白凭据有关。

我期望 ASPNET 用户成为数据库的安全令牌。为什么这没有发生?我错过了一个设置吗?(通常当 sql server 和 web server 位于域中的两台不同机器上时,会发生这种情况,委托和双跳,但在我的情况下,一切都在开发盒上)

4

2 回答 2

1

听起来您遇到了“双跳”问题。这基本上意味着您不允许将客户端权限转发给第三方,通常是另一台机器上的 sql 服务器。

我之前已经回答过这个问题,也许这个答案会对你有所帮助。

于 2011-01-02T23:51:01.547 回答
0

您的问题似乎与将正确凭据传递给 SQL Server 的 Web 服务有关。

有几层安全性供您检查。但首先也是最简单的方法是确保您已禁用除 Windows 集成之外的任何安全性。IIS 将始终使用最简单的安全协议。因此,如果您启用了匿名和 Windows 集成,那么您的网站将始终选择匿名。

接下来,IIS7+ 中的每个站点都在一个应用程序池下运行,该应用程序池可以具有单独的安全性。然后在所有 IIS Windows 服务下运行在特定帐户下。

购买默认设置,您应该不会对应用程序池和 IIS 安全性有太大问题,因为它几乎可以开箱即用,但值得一试。

我要检查的另一件事是 SQL 中的命名管道。我的知识并不丰富,但我知道命名管道可用于同一服务器上各种应用程序之间的通信,IIS 和 SQL 是其中的两个。

如果通过 SQL 配置管理器禁用了名称管道,那么我预计会出现不同的错误,但值得启用。

希望这可以帮助。麦克风

于 2011-01-02T23:03:14.510 回答