sql身份验证或Windows身份验证

时间:2009-02-05 18:48:10

标签: asp.net sql-server permissions

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

8 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

当您需要非Windows计算机进行数据库连接时,请使用SQL Auth。

请记住,它会添加另一个攻击媒介(另一组凭据来破坏计算机),因此请确保在使用它之前确实需要它。

答案 2 :(得分:3)

当您无法使用Windows身份验证时,确实使用SQL身份验证。在我看来,这是唯一的时间。 Windows身份验证更安全,可以在使用Active Directory的位置集中管理。如果您的人员确实知道如何管理Active Directory并且您处于Windows环境中,则没有充分的理由使用sql身份验证。

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

您需要额外的步骤来保护连接字符串信息,因为密码等在存储在配置文件中时应加密。与Windows身份验证相比,使用Sql Server身份验证有效且安全地调用了更多的步骤。如果使用相同的sql server凭据访问多个服务器上的多个数据库,则这一点非常正确。

答案 3 :(得分:2)

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

另外,和Corbin一样,如果客户端没有运行Windows操作系统,则无法使用Windows身份验证(显然)。

答案 4 :(得分:1)

请注意,Windows身份验证是推荐的身份验证模式,原因很简单,因为它继承了OS身份验证。如上所述,有许多因素可能无法使用Windows身份验证。

答案 5 :(得分:1)

这取决于。如果您正在开发内部Web应用程序和网络IT人员在大厅,那么使用Windows身份验证。如果您要将应用程序部署到客户并且您无法控制其网络基础结构,那么我将使用SQL身份验证

答案 6 :(得分:1)

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

是否需要使用某些脚本动态创建用户帐户?对于SQL用户而言,它必须比Active Directory更容易(可能不是不可能)。

答案 7 :(得分:1)

除上述所有内容外,请考虑以下情况:

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

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

(为了增加清晰度):数据库未在活动目录中注册。然后它无法使用Windows身份验证。