0

这是情况。我正在开发一个新网站来访问旧数据库。这是 DoD 安装,因此周围有很多安全措施。

当前的应用程序是用经典的 ASP、VBScript 和一些 javascript 编写的。新系统是 ASP.NET。

在旧系统中访问数据库意味着使用您自己的凭据(域名\用户名)访问服务器。现在我正在尝试测试我所做的一些早期开发。当我使用 Cassini(在 VS2008 下)时,我可以毫无困难地访问数据库,因为 ourdomain\myusername 在 SQL Server 实例中注册为受信任的连接。由于我必须编写安全方面的内容,Cassini 不能再用作测试服务器 - 我必须使用 IIS(我们这里有安全读卡器)。卡西尼无法处理它们。

因此,当我解决了将适当帐户添加到本地 PC 上的管理员以便我可以在使用 IIS 时在 VS2008 中进行调试的所有问题时,我尝试连接到数据库并被拒绝,因为 MYPC\ASPNET 不是受信任的联系。

改变现有的数据库是不可能的。用于访问数据库的硬编码用户名和密码是不可能的。

我问 DBA 是否可以将 MYPC\ASPNET 添加到域组中,以便 SQL Server 可以将其视为可信连接(因为 MYDOMAIN\MYNAME 位于被视为可信连接的组中)。他告诉我这在技术上是不可能的。

最终会有三四台机器(我的、另一位开发人员、最终的实时 Web 服务器和未来的测试 Web 服务器)的 ASPNET 帐户将访问我们的两台 SQL 服务器(实时和测试)。

我必须做些什么才能使现有的 SQL 服务器将我视为朋友而不是敌人?我查看了模拟,但我得到的印象是它与我们的系统不兼容 - 业务规则调用一个通用例程来创建一个 SqlConnection 对象并打开它(甚至可能是一个 SqlTransaction 对象与之一起使用)并且使用了这个对象其余的业务规则和数据访问层,直到完成。一旦打开 SqlConnection (并通过 ByRef 返回调用例程),模拟似乎不会持续存在

提前感谢您的任何建议。

4

4 回答 4

1

你有两个选择:

  1. 在配置为在域帐户上下文中运行的应用程序池中运行您的 Web 应用程序
  2. 使用模拟并将您的 Web 应用程序配置为仅使用 Windows 身份验证
于 2009-03-27T16:37:49.693 回答
0

使用模拟

于 2009-03-27T16:34:02.340 回答
0

听起来您想冒充访问您网站的客户对吗?您是否尝试过使用模拟,或者您认为它不起作用?

编辑

正如 Albert 指出的那样,模拟要求用户使用 Windows 身份验证进行身份验证。您需要禁用匿名访问,并在 IIS 管理工具中启用 Windows 身份验证。

于 2009-03-27T16:34:32.307 回答
0

正如已经建议的那样,您应该使用模拟。

但是,如果您的 SQL Server 运行在与您的 Web 服务器不同的计算机上,那么模拟将不够,因为用户的凭据不会被委派给 SQL Server(服务器跃点)。在这种情况下,您将不得不在 AD 中启用委派或在您的 SQL Server 上创建一个非 Windows 登录并改用它(如果您的 SQL Server 实际使用 Windows 登录来控制对表等的访问控制,这将不起作用) .

于 2009-03-27T16:47:37.627 回答