使用Windows身份验证的连接字符串


132

我正在创建一个网站,但是在数据库中我使用Windows身份验证。

我知道您将其用于SQL身份验证

<connectionStrings> 
    <add name="NorthwindContex" 
       connectionString="data source=localhost;
       initial catalog=northwind;persist security info=True; 
       user id=sa;password=P@ssw0rd" 
       providerName="System.Data.SqlClient" /> 
</connectionStrings>

如何修改它以与Windows身份验证一起使用?

Answers:


192

将用户名和密码替换为 Integrated Security=SSPI;

所以连接字符串应该是

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 

1
我知道您可以将特定的AD用户设置为应用程序池(Web应用程序)。Windows应用程式可以做同样的事情吗?
user384080 2014年

6
Persist Security Info可能不需要:stackoverflow.com/a/2010059/1869660
Sphinxxx

@ heads5150:我的项目中是否可能没有连接字符串?我错过了什么吗?我已经搜索了整个解决方案,找到了如上所述的连接字符串。我找不到任何东西。我创建的网站在Web版本和Web配置中受到了评论。我正在将vs express 2013与本地数据库一起使用。
维尼2015年

18

对于许多小时后的正确解决方案:

  1. 打开配置文件
  2. 使用以下更改连接字符串

<add name="umbracoDbDSN" connectionString="data source=YOUR_SERVER_NAME;database=nrc;Integrated Security=SSPI;persist security info=True;" providerName="System.Data.SqlClient" />

  1. 用您当前的服务器名称更改YOUR_SERVER_NAME并保存
  2. 打开IIS管理器
  3. 查找网站或Web应用程序正在使用的应用程序池的名称
  4. 右键单击并选择高级设置
  5. 在“ 流程模型”下的“高级设置”中,将“ 身份” 更改为“自定义”帐户,并添加您的“服务器管理”详细信息,请参见所附的图像:

在此处输入图片说明

希望这会有所帮助。


2
该解决方案对我有用,但是我想知道对身份的更改如何在安全性方面影响应用程序的行为?
CesarB

该流程执行的所有操作都将使用该帐户的权限/特权运行。不要授予比所需更多的权限。建议使用一个专用的服务帐户。建议检查出的DISA IIS和Windows Server STIG以及:public.cyber.mil/stigs/downloads
duct_tape_coder

12

为了通过Windows身份验证连接到sql服务器数据库,基本上需要连接的服务器,数据库名称,集成安全性信息和提供程序名称是什么。

基本上可以这样:

<connectionStrings>      
<add name="MyConnectionString"
         connectionString="data source=ServerName;
   Initial Catalog=DatabaseName;Integrated Security=True;"
         providerName="System.Data.SqlClient" />
</connectionStrings> 

如果将Integrated Security字段设置为true,则基本上意味着您希望通过Windows身份验证访问数据库。 false,则 Windows身份验证将不起作用。

根据您使用的提供程序,它的工作方式也有所不同。

  • SqlClient两者的 Integrated Security = true; IntegratedSecurity = SSPI;正在工作。

  • OleDb的 Integrated Security = SSPI;

  • 奥德贝Trusted_Connection = yes;
  • OracleClientIntegrated Security =是;

与OleDb提供程序一起使用时,集成安全性= true会引发异常。


6

这更短并且有效

<connectionStrings>      
<add name="DBConnection"
             connectionString="data source=SERVER\INSTANCE;
       Initial Catalog=MyDB;Integrated Security=SSPI;"
             providerName="System.Data.SqlClient" />
</connectionStrings> 

不需要持久性安全信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.