![](/img/trans.png)
[英]How to check if a windows user has access (Windows Integrated Security authentication) to SQL Server Analysis Services (SSAS) Server via impersonation
[英]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 Studio
或Windows
内的任何IDE
连接到 SQL Server 实例,则需要对运行 SSMS 或 IDE 的 Windows 用户进行身份验证。 但是,如果连接是从 IIS 建立的,则需要对使用该连接的应用程序池进行身份验证。
使用Standard Security时,它将始终使用相同的username
和password
进行身份验证。
无法在同一个连接中使用两个安全上下文。 如果您需要同时使用两者,那么您将需要使用两个不同的ConnectionString
并使用其中一个来连接启动器( SqlConnection
、 DbContext
、 ..等) - 取决于所使用的 SQL 提供程序。
例如,假设您有一个登录页面,它将验证用户凭据。 此登录页面的后端将使用Integrated Security
连接到数据库以验证用户。 如果验证成功,那么您需要为该用户构建一个 connectionString 并将其重用于所有用户请求。 您对所有用户执行相同操作。
此技术将要求用户还具有匹配的 SQL 登录名,并具有适当的权限才能查询数据库。 这将投入大量工作,并且它也有其自身的安全风险。
常见的方法是使用一个具有Integrated Security
性的connectionString
,以便应用程序启动连接,并实现一个用户管理系统,例如ASP.NET Identity
或任何类似系统,该系统将控制用户在应用程序上的活动。 这比让用户直接访问数据库更安全。
如果您只需要让 DBA 知道哪个用户正在使用该连接,您可以使用Workstation ID
或Application Name
关键字来添加有关该连接的更多信息,例如Application Name="CurrentApplication\CurrentUserName
其中CurrentApplication
将是该连接的名称正在启动连接的项目CurrentUserName
将是使用此连接的当前登录用户。当 DBA 执行sp_who2
时,将显示此信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.