【问题标题】:How to switch SQL server authentication based application to Windows based authentication app?如何将基于 SQL Server 身份验证的应用程序切换到基于 Windows 的身份验证应用程序?
【发布时间】:2013-09-09 13:42:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# sql sql-server


    【解决方案1】:

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

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

    如果您不使用 Windows 系统帐户,您将面临密码过期、安全存储密码、未经授权使用用户名运行其他可执行文件等问题。

    在Windows中添加用户很简单,只要搜索:如何在Windows[版本版]中添加用户帐户,但可以先考虑使用系统帐户(如本地服务、网络服务) )。

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


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

    【讨论】:

    • 感谢 oleksii。建议的解决方案听起来不错。如果用户机器上只有 Windows 模式身份验证可用,有哪些可能的修改?
    • 您需要将用户添加到授权的数据库用户。我不确定这是否可以在所有机器上以编程方式完成。通过管理工作室手动执行或运行脚本(在这种情况下,您需要与服务器建立有效连接 - catch 22),这很简单。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2012-11-03
      • 2013-07-24
      • 2020-03-04
      • 2014-06-13
      • 2014-02-05
      • 2017-01-23
      • 2014-01-26
      • 2014-10-12
      相关资源
      最近更新 更多