【发布时间】:2012-11-08 00:57:44
【问题描述】:
我正在尝试连接并收到如下错误:
登录失败。登录不能与 Windows 身份验证一起使用
我在 SQL Server 和 Web 服务器上使用镜像本地帐户,因为我只是尝试在不在同一域中的计算机之间使用受信任的连接。这似乎是相当普遍的事情,但是经过几天试图找到适用于我情况的答案后,我不承认任何答案都适用......或者我只是一个 . NET 开发人员而不是系统管理员或 DBA 意味着我拥有它,只是不知道它。
这就是我能说的:
- CMS Web 服务器:在企业 DMZ 上的 Windows Server 2008、IIS7 上运行的 ASP.NET 4.0 Web 应用程序
- CMS 数据库服务器:域服务器上的 SQL Server 2008 R2
- 出于各种我不会深入讨论的原因,对凭据进行加密是不够的。
- 应用程序需要连接的数据库端口不是标准端口,而是设置为侦听不同的端口。
- 设置数据库镜像不是一种选择,也不能真正满足要求(在我看来)
另外,如果这有助于了解,仅供参考:
- 内容输入发生在内部 Web 服务器上,该服务器将内容发布到由 DMZ Web 服务器访问的同一 DB。
内容服务器设置为让网站以集成模式运行应用程序池,Windows 域用户已使用 -ga 开关设置为服务帐户并获得所有适当的权限,一切运行完美.
外部 Web 服务器,无域访问权限,使用镜像帐户(在 SQL Server 计算机和 Web 计算机上设置相同的用户名和密码)。
- Web 服务器上的本地帐户使用 -ga 开关设置为服务帐户,并作为我的应用程序的应用程序池标识运行。
- 在 SQL Server 框中,创建具有相同凭据的本地用户,并授予域用户身份具有的相同权限
- 使用 SQL Server 用户凭据通过安装在 Web 服务器上的 MGMT Studio 连接到 SQL Server 工作正常。
现在,如果我将用户名输入到连接字符串中,一切就完美了。一旦我像使用域服务器连接字符串一样将trusted_connection=yes 放入连接字符串中,我就会收到信任错误。
所以如果我的连接字符串是这样的,它工作正常:
Server=myServerAddress;Database=myDataBase;Username=MyUser; Password=MyPassword;
如果我将连接字符串更改为其中任何一个,它都会失败:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
或
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
我正在与客户的一位网络管理员合作,他不一定是 DBA,也没有配置 Web 应用程序的经验。所以我们可能遗漏了一些东西,任何建议或想法都会有所帮助。我错过了什么?
【问题讨论】:
标签: asp.net authentication sql-server-2008-r2 dmz trustedconnection