在哪种情况下,*本地*用户帐户可以通过受信任的连接访问远程SQL Server?

我们的一个客户有以下configuration:

  • 在域控制器上,有一个SQL Server。
  • 在他的PC(WinXP)上,他使用LocalPC\LocalUserlogin。
  • 在Windows资源pipe理器中,他打开DomainController\SomeShare并以Domain\Administrator身份validation。
  • 他启动我们的应用程序,它打开SQL Server的可信连接(Windows身份validation)。 有用。 在SSMS中,连接显示为用户Domain\Administrator

首先,我感到惊讶的是,这甚至有效。 (我的第一个怀疑是有一个用户在域中有相同的名称和密码,但在域中没有用户LocalUser 。)

然后,我们试图在他的新电脑上重现相同的行为,但是失败了:

  • 在他的新PC(Win7)上,他用OtherLocalPC\OtherLocalUser
  • 在Windows资源pipe理器中,他打开DomainController\SomeShare并以Domain\Administrator身份validation。
  • 他启动我们的应用程序,它打开SQL Server的可信连接(Windows身份validation)。 它失败,错误消息Login failed for user ''. The user is not associated with a trusted SQL Server connection. Login failed for user ''. The user is not associated with a trusted SQL Server connection.

因此,我的问题: 在哪些情况下,非域用户可以使用不同凭据的Windows身份validation访问远程SQL Server? 显然,这是可能的(它在旧PC上运行),但是为什么? 我怎么能重现呢?

正如伯尼·怀特所说,这可能是由于Kerberosconfiguration的差异。 KerbTray将在WinXP上工作, klist内置于W7及以上版本。

除此之外,如果您尝试解决的问题是使用Windows身份validation的SQL服务器,则可以通过运行runas /netonly /user:DOMAIN\Administrator application.exe

另一种方法是让用户通过VPN拨入,即使他们坐在内部networking上。 这样做会导致networking凭证用于所有打开的应用程序,并且具有允许用于Outlook,SQL Server,LDAP和他们可以访问的任何其他应用程序的SSO的好处。