混合模式如何在SQL中工作

时间:2016-05-26 11:37:29

标签: sql-server windows sql-server-2008 authentication

我目前是管理数据库的新手,因此这个问题。从我的讲义中,它说明了

  1. 用户登录网络,Windows或其他方式。

  2. 用户使用除用于获取网络访问权限之外的用户名和密码打开与SQL Server的不可信连接。它被称为不可信连接,因为SQL Server不信任操作系统来验证用户的密码。

  3. SQL Server将用户输入的用户名和密码与sys.syslogins表中的条目相匹配。

  4. 我的问题是用户如何打开与SQL的不可信连接?我很困惑。 SQL Server的含义是不相信操作系统验证用户的密码。

1 个答案:

答案 0 :(得分:0)

可信连接是一个传统术语,实际上是一个误称,主要是因为开发人员如何看待连接到数据库的应用程序,而不是数据库实际处理连接请求的方式。 SQL Server实际上并不信任连接。它信任您指定用于对用户进行身份验证的第三方,并提供随后用于授权的相应令牌。恰恰相反,Windows是唯一可以让它信任的第三方,但它并非必须如此。

在此过程中要区分的重要事项是身份验证和授权。 SQL Server和Windows都可以验证登录尝试,但只有SQL Server可以授权访问对象/数据。它们虽然是相关的部分,但却是截然不同的。

使用集成的authN连接时,您的安全令牌将传递给SQL Server,然后SQL Server会对登录映射进行基本检查以建立连接。如果成功,它继续为authZ做它需要的东西(例如数据库上下文切换,授权等......)。它只关心您是否拥有来自可信来源的有效令牌。在这种情况下,它是Windows(简化AD,Kerberos等......后面的过程)。它没有进一步验证,它相信Windows已经做了正确的检查。请注意,它不必是网络或域用户。甚至本地用户也可以设置为集成authN,但这通常不是一个好主意。

如果您使用SQL Server凭据连接,则在登录前握手之后,您的凭据将传递到SQL Server以进行授权,以便检查登录,比较密码哈希,策略(如果有)等。 ..实际上,用户身份验证会检查Windows在您登录主机时是否已完成,但安全范围仅为SQL Server。在此authN完成之前,您尚未登录。出现这些步骤是因为尝试使用未经验证的凭据而不是受信任方发出的安全令牌。一旦成功完成authN,它就会跟以前的authZ相同的代码路径。