存储用户名和密码以从没有集成安全性的Windows服务访问SQL Server

时间:2011-02-23 23:33:52

标签: .net sql-server windows-services integrated-security

我们有一个访问SQL Server的服务,客户端没有使用集成安全性,我们需要服务在打开机器时拥有数据库的权限。我们是否必须存储SQL Server用户名和密码?如果是这样的话? (以及如何)

3 个答案:

答案 0 :(得分:2)

是的,如果要使用特定的用户名和密码连接到SQL Server,则需要在连接字符串中提供这些凭据。

是的,将它们存储在纯文本中是一件冒险的事情......

...幸运的是,.NET允许您对配置文件的整个部分进行强加密!

阅读Encrypting Passwords in a .NET application,与普遍看法相反,这在所有.NET中都可用 - 而不是仅在ASP.NET中可用。它也适用于服务 - 根本不是问题。

因此,将SQL Server连接字符串存储到服务的app.config中,然后加密<connectionStrings>部分并完成它!

答案 1 :(得分:1)

您需要为此服务创建SQL登录名(http://msdn.microsoft.com/en-us/library/aa337562.aspx)。此SQL登录的用户名/密码需要存储在服务可以访问的某个位置(应用程序配置/注册表)。

每次存储凭据时,都要对其进行加密,以便其他任何人都无法以明文形式查看。您还可以选择加密整个连接字符串。您的服务应该能够解密和读取凭证/连接字符串,并将此信息传递给SQL连接。

答案 2 :(得分:0)

您应该在服务器中将用户/服务名称添加为具有正确权限且在数据库上相同的用户,您可以使用sql server管理工作室执行此操作。 首先连接到服务器并在服务器用户文件夹上添加用户/服务,然后将用户添加到数据库中的用户文件夹。

看一下这篇文章,在页面末尾谈到“授予对本地SQL Server的访问权限”

http://msdn.microsoft.com/en-us/library/ff647402.aspx