如何转换此连接字符串以使用 SSPI 安全性?

问题描述 投票:0回答:2
sql-server sql-server-2008
2个回答
0
投票

需要是 Windows 用户,而不是 SQL Server 用户。 参见 MSDN :

“集成安全性 - 如果为 false,则在连接中指定用户 ID 和密码。如果为 true,则使用当前 Windows 帐户凭据进行身份验证。可识别的值为 true、false、yes、no 和 sspi(强烈推荐),其中相当于 true。”


0
投票
仅当使用 Windows 身份验证登录时才能指定

SSPI。您已创建 SQL Server 身份验证登录,并通过

User ID=
Password=
关键字在连接字符串中指定该登录。指定 SSPI 也会导致 SQL Server 尝试通过 Windows 安全令牌对连接用户进行身份验证,该令牌不会由客户端传递给 SQL Server,因为客户端指定了 SQL Server 用户名和密码。简而言之,您指定了两种身份验证方法,而只能指定一种方法。

如果您希望连接使用经过 Windows 身份验证的用户,请使用 FROM WINDOWS

创建登录
。假设您有一个名为
DOMAIN\MyUser
的 Windows 用户,您可以使用以下代码来完成此操作:

USE [master];
GO
CREATE LOGIN [DOMAIN\MyUser]
FROM WINDOWS;

您还需要在所需的数据库中创建一个用于登录的用户:

USE [<db_name>];
GO
CREATE USER [MyUser]
FOR LOGIN [DOMAIN\MyUser];

注意,上述语句中未指定密码,因为 Windows 正在处理身份验证。

然后,您需要确保应用程序以“DOMAIN\MyUser”身份运行,并在连接字符串中使用以下内容:

<add name="MyEntities"
  providerName="System.Data.EntityClient"
  connectionString="metadata=
  res://*/;
  provider=System.Data.SqlClient;
  provider connection string='
  Data Source=localhost;
  Initial Catalog=MyDb;
  Integrated Security=SSPI;
  MultipleActiveResultSets=True'" />
© www.soinside.com 2019 - 2024. All rights reserved.