如何指定具有集成安全性的用户 ID/密码?

Posted

技术标签:

【中文标题】如何指定具有集成安全性的用户 ID/密码?【英文标题】:How to specify User Id/password with integrated security? 【发布时间】:2020-05-18 17:00:35 【问题描述】:

我知道集成安全性是用于 Windows 身份验证的 SQL 连接字符串中的选项(因为我们没有 sql 身份验证),但假设我希望其他人能够连接到数据库服务器(数据源)和数据库,我给他们用于访问数据库服务器的 Windows 帐户和密码(运行不同的用户 SSMS)

他们如何在使用集成安全性进行 Windows 身份验证的同时指定用户 ID 和密码?

类似这样的:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=UserDomainName\UserName;Password=myPassword;

但根据我的阅读,集成安全忽略了用户 ID/密码

【问题讨论】:

【参考方案1】:

是的,你不能……这不是集成安全的工作原理。

如果您使用的是 SSMS 等客户端应用程序,则可以使用“运行方式”(按住 shift,右键单击 SSMS 图标,选择“以其他用户身份运行”),或者如果您在某些代码中执行此操作,则可以使用模拟控制。

【讨论】:

如何在连接字符串中进行模拟? @Cataster 你不能——那是不可能的。 Impersonation 是一个 Windows api 调用,可让您使用另一个用户上下文 - 因此,如果您这样做是您正在编写的应用程序,您可以模拟,然后连接,但您需要为此编写代码,您不能只是这样做连接字符串' 该死...您提到“在我们可以控制的某些代码中进行模拟”您能详细说明一下吗?想要建立连接但无权访问的人正在私有云中托管 .net 应用程序,并且为了让用户能够连接到该应用程序(建立与数据库的连接),他们需要输入他们的用户名和密码。这会产生一个问题,因为我们不能添加每个人的 ID 来授予他们数据库访问权限,我们需要能够使用 windows 服务帐户 ID 来避免这种情况 @Cataster - 那么为什么不授予服务帐户 ID 访问数据库的权限...我想我不明白您的问题 在 .net 应用程序中当然可以进行模拟,因此他(编写 .net 应用程序的人)可以在进行数据库调用之前模拟所需的帐户。也就是说,听起来您并不想这样做,而只是想将服务帐户权限授予数据库...阅读:docs.microsoft.com/en-us/dotnet/api/…

以上是关于如何指定具有集成安全性的用户 ID/密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Angular 4中提供用户名和密码以使用具有oAuth安全性的rest控制器?

PHP 会话变量的安全性如何?

如何使用 @WithMockUser 并从我的属性文件中传递我的用户名和密码?

如何设置ssh安全只允许用户从指定的IP登陆

如何使用 Windows 集成身份验证强制显示登录窗口

使用用户 ID 代替电子邮件发送密码恢复令牌是不是安全?