ADO.NET SQL Server身份验证两种模式揭秘
ADO.NET经过长时间的发展,很多用户都很了解ADO.NET SQL Server了,这里我发表一下个人理解,和大家讨论讨论。ADO.NET SQL Server身份验证支持两种模式,Windows 身份验证模式和混合模式。
◆Windows 身份验证是默认模式(通常称为集成安全),因为此 SQL Server 安全模型与 Windows 高度集成。信任特定 Windows 用户和组帐户登录 SQL Server。已经过身份验证的 Windows 用户不必提供附加的凭据。
◆混合模式支持通过 Windows 和 SQL Server 进行的身份验证。用户名和密码对保留在 SQL Server 中。
我们建议尽可能使用 Windows 身份验证。Windows 身份验证使用一系列加密消息验证 SQL Server 中的用户。使用 SQL Server 登录时,会通过网络传递 SQL Server 登录名和密码,这样会降低它们的安全性。使用 Windows 身份验证,已经登录到 Windows 的用户不必再单独登录到 SQL Server。下面的 SqlConnection.ConnectionString 可指定 Windows 身份验证,而无需用户名或密码。
"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
登录名与数据库用户名不同。您必须通过单独的操作将登录或 Windows 组映射到数据库用户或角色。然后向用户或角色授予访问数据库对象的权限。
ADO.NET SQL Server身份验证方案
在下列情形中,Windows 身份验证通常为最佳选择:
◆存在域控制器。
◆应用程序和数据库位于同一台计算机上。
◆您正在使用 SQL Server Express 的实例。
SQL Server 登录常常在以下情况中使用:
◆您有工作组。
◆用户从其他不受信任的域进行连接。
◆Internet 应用程序(例如 ASP.NET)。
指定 Windows 身份验证不会禁用 SQL Server 登录。使用 ALTER LOGIN DISABLE Transact-SQL 语句会禁用具有高特权的 SQL Server 登录。
ADO.NET SQL Server身份验证登录类型
SQL Server 2000 支持三种登录类型:
◆本地 Windows 用户帐户或受信任的域帐户。SQL Server 依赖 Windows 来对 Windows 用户帐户进行身份验证。
◆Windows 组。向 Windows 组授予访问权限会向作为该组的成员的所有 Windows 用户登录授予访问权限。
◆SQL Server 登录。SQL Server 将用户名和密码的哈希形式都存储在 master 数据库中,使用内部身份验证方法验证尝试的登录。