连接字符串使用域用户?

Nic*_*vic 26 asp.net web-config

以前,对于我们所有的asp.net应用程序,我们一直在SQL Server中使用sysadmin用户来连接和添加/更新/删除/获取数据.我们的SQL管理员希望删除该帐户并创建域帐户,以便我们可以在.net应用程序中使用该帐户.

我当前的连接字符串是:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=user;Password=password" providerName="System.Data.SqlClient"

使用域帐户的连接字符串是什么?

我试过了 :

name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=domain\user;Password=password" providerName="System.Data.SqlClient"

它不起作用.

是否有使用域帐户连接到SQL Server的不同方法?

谢谢您帮忙.

Bas*_*sic 36

看看connectionstrings.com的每一个可能的变化 - 我一直使用的非常方便的资源

具体来说,您需要以下格式:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
Run Code Online (Sandbox Code Playgroud)

当然,这只适用于有问题的域帐户是打开连接的域帐户.

没有简单的方法来连接任意凭据 - 但您可以冒充有问题的用户然后连接.

这可能有点痛苦.如果用户在本地网络上(或您控制其浏览器配置),则另一种方法是在您的站点上使用Kerberos身份验证.这些页面将以相关用户的权限提供 - 然后您可以使用上面的连接字符串,IIS将使用每个用户的相应凭据连接到Db.从安全角度来看,这一点特别有用,因为Db能够基于每个用户进行审计,权限可以是每用户/行/列,而不是每个应用程序.

  • 这不是您登录的对象,而是网站运行的对象.例如,进入应用程序池并将其中的用户更改为(例如)MyDomain\MyWeb.Service - 然后将数据库的权限授予该用户.这是最简单的方法 - 但是所有连接都将作为一个用户完成.如果您希望连接特定于每个用户的权限(例如,对于PCI合规性),您需要查看通过凭据 - 通过选择正确的身份验证模型或使用模拟 (3认同)
  • 欢迎。顺便说一句,您可以通过确保域控制器将该帐户标记为“服务”帐户并且不应用于交互式登录来进一步强化这一点 - 这将防止一些尝试以 Web 服务器身份登录 Windows,然后访问数据库。 (3认同)
  • @andrej这里的要点是,只有在帐户是SQL帐户而不是域帐户时才有效. (2认同)

Shu*_*ham 7

如果要使用其他用户帐户,则登录用户有两个选择。

选项1

您可以将用户添加到应用程序池标识。

为此,请转到应用程序池的高级设置并编辑标识以使用所需的用户。

选项2

在Web配置中添加它:

<identity impersonate="true" userName="Domain\User" password="Password" />
Run Code Online (Sandbox Code Playgroud)

并使用以下连接搅拌:

<add name="Name" connectionString="Data source=SqlServer;Initial Catalog=DbName;Integrated security=True" providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见:https : //msdn.microsoft.com/zh-cn/library/134ec8tc.aspx

在这里也找到了另一篇好文章 https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net


Ode*_*ded 5

使用集成安全:

Integrated Security=SSPI
Run Code Online (Sandbox Code Playgroud)

其中有一个变体:

Trusted_Connection=True
Run Code Online (Sandbox Code Playgroud)

可以在connectionstrings.com上找到不同的连接字符串(适用于各种数据库)。

使用这两种方法,您需要确保应用程序在您需要登录的帐户下运行。