繁体   English   中英

如何将基于SQL Server身份验证的应用程序切换到基于Windows的身份验

[英]How to switch SQL server authentication based application to Windows based authentication app?

我开发了一个使用SQL Server身份验证连接到数据库的应用程序。 安装设置会询问管理员凭据(对于SQL Server身份验证)并创建新用户(特定于应用程序)。 安装程序需要管理员凭据才能创建特定用户。 安装程序还会创建数据库并将此数据库映射到新创建的用户。 现在需求更改以支持MIXED模式身份验证(Windows和SQL服务器)。 这意味着,虽然安装设置可以选择Windows模式或SQL模式。 用户可以选择Windows或SQL。 如果选择了SQL,则必须提供用户名和密码。 我的问题是:

1-如果用户选择WINDOWS模式,是否需要创建特定于应用程序的用户? 如果是,请指导如何创建新用户。

2-在整个应用程序中,我使用了带有“用户名”的连接字符串(安装时安装时创建的应用程序专用用户)和“密码”。 我是否需要创建另一个连接字符串才能达到目的?

[1]不,你不必。 你可以,它会工作,但这不是必需的。 在Windows身份验证中,该过程将为当前运行代码的用户的SQL Server提供凭据。 在大多数情况下,这将是启动流程的用户。 您可以根据需要更改每个线程的用户,请参阅Thread.CurrentPrincipal 但我建议不要这样做,因为这显然会使事情变得复杂。

在大多数情况下,您将应用程序部署为服务,Windows服务或IIS应用程序。 然后它在特定的Windows系统帐户下运行,您必须在SQL服务器上使用该帐户。

如果您不使用Windows系统帐户,您将面临密码过期,安全存储密码,无需使用用户名以运行其他可执行文件的问题。

将用户添加到Windows,只搜索: 如何将用户帐户添加到Windows [版本] ,但考虑首先使用系统帐户(例如本地服务,网络服务)是微不足道的。

[2]我建议重构您的应用程序,以便您通过名称引用连接字符串。


您可能希望将配置管理与可执行文件分开。 即一个应用程序准备配置,另一个应用程序使用它。 例如,安装程序写入配置字符串,应用程序使用配置字符串,只要它允许访问数据库,应用程序就不关心内部的内容。

您应该考虑使用System.Data.SqlClient.ConnectionStringBuilder ,而不是尝试从字符串构建System.Data.SqlClient.ConnectionString

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM