【问题标题】:sql authentication or Windows authsql 身份验证或 Windows 身份验证
【发布时间】:2010-10-05 18:19:36
【问题描述】:

对于我的带有表单身份验证的 asp.net 网站,我将使用 Windows 集成安全性来访问 sql 数据库。我将授予 ASPNET 或 NETWORK SERVICE 的 DB 权限。在什么情况下我会改用 SQL 身份验证?

【问题讨论】:

    标签: asp.net sql-server permissions


    【解决方案1】:

    当您的网站由外部 ISP 托管时,通常也需要 SQL 身份验证。它们通常不支持 Windows 身份验证或不允许您向 Windows 帐户授予权限。

    【讨论】:

    • 如果它是一个访问数据库的 Windows 托管网站,是否正确?
    • 仅此还不够。 ISP 还必须允许对数据库进行 Windows 身份验证,并且在许多情况下他们不会这样做,这意味着即使您的网站托管在 Windows 上,您仍然必须使用 SQL 身份验证。
    • 有 VPS 吗?我相信您可以使用综合安全性。
    【解决方案2】:

    当您需要非 Windows 机器建立数据库连接时使用 SQL Auth。

    请记住,它添加了另一个攻击向量(另一组用于危害机器的凭据),因此请确保在使用之前确实需要它。

    【讨论】:

    • 其实这并不完全正确,跨域也可以使用Windows Authentication,只是需要多做一点设置。
    【解决方案3】:

    当您不能使用 Windows 身份验证时,您确实使用 SQL 身份验证。在我看来,这是唯一一次。 Windows 身份验证更安全,可以在使用 Active Directory 的地方集中管理。如果您有真正知道如何管理 Active Directory 的人,并且您在 Windows 环境中,则没有充分的理由使用 sql 身份验证。

    使用 Sql 身份验证,您必须管理连接字符串中的密码等,这意味着为了更改访问数据库的帐户,必须有人知道应用程序的功能或至少知道信息的存储位置。使用 Windows 身份验证,网络管理员所要做的就是在 IIS 应用程序设置中输入正确的用户名和密码,然后您就可以开始摇滚了。无需开发人员交互。

    您有额外的步骤来保护连接字符串信息,例如密码等在存储在配置文件中时应加密。与 Windows 身份验证相比,使用 Sql Server 身份验证有效且安全地涉及更多步骤。如果使用相同的 sql server 凭据跨多个服务器访问多个数据库,则尤其如此。

    【讨论】:

    • 我 99% 同意这篇文章,但我认为在另一种情况下 SQL 身份验证是有意义的。对于高流量站点,单个 SQL 应用程序登录使用更有效的连接池。但是,如前所述,它通常不太安全。
    • 是的,但是如果您使用的是 asp.net worker 进程帐户而不是单个经过身份验证的用户,我很确定您可以将连接池与 Windows 身份验证帐户一起使用。
    【解决方案4】:

    如果您想完全管理用户帐户,您应该使用 SQL 身份验证。 这样,您就可以完全控制用户帐户。例如,您可以强制他们输入私人信息。

    另外,就像 Corbin 提到的,如果客户端没有运行 Windows 操作系统,则不能使用 Windows 身份验证(显然)。

    【讨论】:

      【解决方案5】:

      请注意,Windows 身份验证是推荐的身份验证模式,原因很简单,它继承了操作系统身份验证。有许多因素可能会导致您不使用上述 Windows 身份验证。

      【讨论】:

        【解决方案6】:

        这取决于。如果您正在开发内部 Web 应用程序并且网络 IT 人员在大厅里,那么请使用 Windows 身份验证。如果您将应用部署给客户并且无法控制他们的网络基础设施,那么我会使用 SQL 身份验证

        【讨论】:

          【解决方案7】:

          如果您无法控制 Active Directory(例如在托管情况下)或有用户使用 Windows 以外的操作系统,则您别无选择。

          是否需要使用一些脚本即时创建用户帐户?对于 sql 用户,它必须比 Active Directory 更容易(可能并非不可能)。

          【讨论】:

            【解决方案8】:

            除了以上所有,考虑这样一个案例:

            您需要使用的帐户来自域 A。 该数据库位于域 B 上。 域 A 和域 B 没有信任关系。

            您需要 SQL 身份验证才能克服这种情况。 希望这会有所帮助。

            (为了更清楚):数据库未在活动目录中注册。那么就不能使用windows认证了。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-12-07
              • 1970-01-01
              • 2013-10-30
              • 1970-01-01
              • 1970-01-01
              • 2012-03-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多