Windows 集成的身份验证连接SQL Server数据库,打造更安全的连接

** 更安全的 SQL Server 连接方式

**

** 摘要 ** :今天用 C# 编写一个 Windows 服务程序,其中要连接一个 Windows 2003 Server 上的 SQL Server 2000 数据库,用 SQL Server 身份验证。发现普通程序都能联上,但是 Windows 服务程序就是联不上。 后来查了资料,找到了解决方法。共享给大家。

三步解决:

1、 在服务器上创建一个用户,配置好 SQL Server 数据库访问权限。

2、 在客户端创建一个一样的用户。

3、 服务程序以刚创建的那个客户端用户登录。

搞定!

** 关键字 ** : SSPI, Integrated Security, SQL Server 和 Windows ,身份验证, SQL Server 不存在,或者拒绝访问。

参考文档: ** Windows 身份验证和 SQL Server **

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/f_and_m/html/vxconWindowsAuthenticationSQLServer.asp

_ Visual Studio _ _ 示例: _ _ Fitch and Mather 7.0

_

|

_

_

---|---

** Windows ** ** 身份验证和 ** ** SQL Server

**

Fitch and Mather 7.0 通过 SQL Server 身份验证访问 SQL Server 。虽然它非常简单并提供了易于理解的示例,但它并不是最安全的方法。 Fitch and Mather 7.0 将连接字符串(包含数据库凭据)存储在两个位置: Web.config 文件和 COM+ Admin 目录(在 FMStocks7.GAM.7 组件的构造函数字符串中)。默认情况下,任何用户都可以读取这两个位置,因此很容易无意中泄露保密信息(凭据)。

一种更好的解决方案是使用 Windows 集成安全性。首先,需要 Internet 信息服务 (IIS) 服务器和 SQL Server 数据库都能识别的 Windows 标识。有两种方法可供选择:

· ** 域帐户 **
如果服务器是域的一部分,并且管理员可以创建应用程序的域帐户,那么这是最佳方法。

· ** 具有同步密码的本地帐户 **
如果网络的实现不支持域帐户,则通过在两台计算机上创建相同的本地帐户 ( 使用相同的密码 ) ,可以安全地访问 IIS 和 SQL Server 数据库。

选择上述方法中的一种,然后创建一个名为 FMStocks_7 Application 的帐户(在域中或在两台计算机上),并使它仅属于 “Guest” 组。这样,应用程序只需要最低程度的特权即可运行。

然后,更改连接字符串(在 Web.config 和 COM+ admin 目录中),移除显式凭据以便能够使用集成安全性。例如,如果连接字符串如下:

Data Source=MYDBSERVER; User Id=Fitch and Mather 7.0 _login; Password=*********;

Initial Catalog=Fitch and Mather 7.0 ;

然后将其更改为:

Data Source=MYDBSERVER;Integrated Security=SSPI;

Initial Catalog=Fitch and Mather 7.0 ;

这一更改意味着,可以使用线程运行所用的标识来访问 SQL Server 数据库。默认情况下, ASP.NET ( aspnet_wp.exe 进程)在本地 ASPNET 帐户下运行,但是,应用程序代码应在 Fitch and Mather 7.0 应用程序帐户下运行。在 Fitch and Mather 7.0 Application 帐户下运行应用程序代码的优点是,这是一个 Windows 帐户,并且您可以授予它适当的 SQL Server 权限。

下一步,需要将帐户与 Fitch and Mather 7.0 应用程序关联。

** 将帐户与 ** ** Fitch and Mather 7.0 ** ** 关联 **

1. 配置 IIS 。

a. 在 “ 开始 ” 菜单上指向 “ 程序 ” ,然后指向 “ 管理工具 ” 并单击 “Internet 服务管理器 ” 。
“Internet 信息服务 ” 窗口随即打开。

b. 在 “ 树 ” 选项卡上,浏览目录树以搜索 FMStocks7 虚拟目录。(此虚拟目录的位置因具体的安装而异。)找到之后,右击 “FMStocks7” 并选择 “ 属性 ” 。
“FMStocks7 属性 ” 对话框随即出现。

c. 在 “FMStocks7 属性 ” 对话框中,选择 “ 目录安全性 ” 选项卡。在 “ 匿名访问和验证控制 ” 下,单击 “ 编辑 ” 按钮。
随即出现 “ 验证方法 ” 对话框。

d. 在 “ 匿名访问 ” 下,单击 “ 编辑 ” 按钮。
“ 匿名用户帐号 ” 对话框随即出现。

e. 清除 “ 允许 IIS 控制密码 ” 。这是必需的,因为 IIS 会存储凭据并在针对 SQL Server 进行身份验证时提供这些凭据。

f. 在 “ 用户名 ” 和 “ 密码 ” 下,将匿名用户帐户替换为 FMStocks7_Application ,并且输入它的密码。

g. 最后,单击三次 “ 确定 ” 以完成。

2. 通过添加以下行启用 Web.config 中的模拟:

3.

 1<system.web>
 2
 34\.  <identity impersonate="true"></identity>
 4
 5.... 
 6
 7最后一步是在  FMStocks7  和  FMStocks7_GAM  数据库中配置  SQL Server  ,以授予  Fitch and Mather 7.0 Application  帐户适当的权限(如果这两个数据库在不同的计算机上运行,则需要在每台计算机上重复此过程): 
 8
 9** 在  ** ** FMStocks7  ** ** 和  ** ** FMStocks7_GAM  ** ** 数据库中配置  ** ** SQL Server  ** ** 权限  **
10
111\.  打开  SQL Server  。 
12
13·  在  “  开始  &lt;span lang="EN-US" style="COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-size: 10.5pt; mso-font-ke</system.web>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus