繁体   English   中英

SQL 集成安全 Windows 身份验证 + 用户名

[英]SQL Integrated Security Windows Authentication + Username

我有一个应用程序,用户使用 SQL 集成身份验证来读取数据。 正在读取数据的系统有多个系统用户。 因此,是否可以在以集成安全模式连接到 SQL 时提供用户名,以便了解正确的用户。

当前使用的连接字符串是:

<add name="SQLCon" connectionString="Data Source=servername;Initial Catalog=testDB;Integrated Security=SSPI" providerName="System.Data.SqlClient"/>

您可以在ConnectionString中使用集成安全性标准安全性。 当您使用集成安全性时,它将使用尝试连接到 SQL 实例的当前Windows Account 例如,如果您尝试从SQL Server Management StudioWindows内的任何IDE连接到 SQL Server 实例,则需要对运行 SSMS 或 IDE 的 Windows 用户进行身份验证。 但是,如果连接是从 IIS 建立的,则需要对使用该连接的应用程序池进行身份验证。

使用Standard Security时,它将始终使用相同的usernamepassword进行身份验证。

无法在同一个连接中使用两个安全上下文。 如果您需要同时使用两者,那么您将需要使用两个不同的ConnectionString并使用其中一个来连接启动器( SqlConnectionDbContext 、 ..等) - 取决于所使用的 SQL 提供程序。

例如,假设您有一个登录页面,它将验证用户凭据。 此登录页面的后端将使用Integrated Security连接到数据库以验证用户。 如果验证成功,那么您需要为该用户构建一个 connectionString 并将其重用于所有用户请求。 您对所有用户执行相同操作。

此技术将要求用户还具有匹配的 SQL 登录名,并具有适当的权限才能查询数据库。 这将投入大量工作,并且它也有其自身的安全风险。

常见的方法是使用一个具有Integrated Security性的connectionString ,以便应用程序启动连接,并实现一个用户管理系统,例如ASP.NET Identity或任何类似系统,该系统将控制用户在应用程序上的活动。 这比让用户直接访问数据库更安全。

如果您只需要让 DBA 知道哪个用户正在使用该连接,您可以使用Workstation IDApplication Name关键字来添加有关该连接的更多信息,例如Application Name="CurrentApplication\CurrentUserName其中CurrentApplication将是该连接的名称正在启动连接的项目CurrentUserName将是使用此连接的当前登录用户。当 DBA 执行sp_who2时,将显示此信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM