【问题标题】:SQL Windows AuthSQL Windows 身份验证
【发布时间】:2012-04-11 00:17:00
【问题描述】:

我有一个使用 IIS 设置的本地测试环境。我正在使用下面的连接字符串在 ASPX 页面的代码隐藏中使用我的 windows auth 连接 c#。我收到 [PCNAME]/ASPNET 登录失败的错误。为什么当我指定连接字符串以使用我的登录时,用户名 ASPNET 试图登录?

user id=[UID];password=[PASS];server=[LOCALSERVER];database=db_specialOps;Trusted_Connection=yes

【问题讨论】:

  • 很可能,您实际上并没有使用该连接字符串。你是如何打开连接的?
  • @PaulAlanTaylor 我看了看,确实有点帮助,但我不确定它是否能给我一个明确的答案/修复。不过谢谢。它确实有助于澄清一些问题。
  • @MystereMan 我肯定在使用连接字符串。我创建了 SqlConnection 并调用了 Open()。然后通过 SqlDataReader 将 SqlCommand 与 SqlConnection 一起使用。

标签: asp.net sql security login windows-authentication


【解决方案1】:

受信任的身份验证使用正在执行该过程的用户的凭据。如果指定为 yes,则忽略连接字符串中的用户名和密码。

在这种情况下,ASPNET 用户帐户是运行进程的用户,因此这是用于连接到 SQL Server 的帐户。

检查,另一个 SO question 解决了这个问题。

When using Trusted_Connection=true and SQL Server authentication, will this effect performance?

【讨论】:

  • 如果 Trusted_Connection 不存在,我的 Windows 身份验证 uid 身份验证将失败。如果是,我得到 ASPNET 错误。我的 UID 设置为整个服务器的 sa 和相关数据库的 dbo。
  • 我能问一下为什么您不只是创建一个供您的应用程序独占使用的 SQL Server 服务帐户吗?这是我编写的几乎所有应用程序中使用的策略。
  • 我正在尝试尽可能多地复制生产环境。一个简单的 SQL 身份验证在测试中可以正常工作,但如果可能的话,Windows 身份验证会提供一个更强大的测试环境。
  • 所以澄清一下,生产服务器需要使用 Windows 身份验证吗?您从该策略中获得了什么是服务帐户无法获得的?只是想了解您的情况,以便我可以提供有助于并解释情况的答案。
  • 所以我检查得更深入一点。我们混合使用windows认证和SQL认证。我的 UID 被添加为登录名下和特定数据库用户下的用户。登录设置为在属性中使用 Windows 身份验证。我希望能够使用它登录。使用我自己添加的用户,我的服务器身份验证工作正常。在这一点上,我真的很想满足我对 windows auth bit 的好奇心。
【解决方案2】:

删除连接字符串的Trusted_Connection=yes 部分。它告诉 sql 客户端库使用当前进程的 Windows 身份使用 Windows 身份验证连接到 sql 服务器。在 ASP.NET 的情况下是 [PCNAME]/ASPNET。这就是您看到该错误消息的原因。

如果您想使用 sql auth,只需提供用户名和密码 - 不带 Trusted_Connection=yes 部分。

【讨论】:

  • 我使用的是 Windows 身份验证,而不是 sql 身份验证。我认为在这种情况下需要 Trusted_Connection。
  • 使用 Windows Auth 时,不能在连接字符串中指定用户名和密码。而是设置 ASP.NET 应用程序池的标识。
【解决方案3】:

Windows 身份验证的连接字符串:

connectionString="Server=MyServer;Database=MyDb;Trusted_Connection=Yes"

connectionString="Initial Catalog=MyDb;Data Source=MyServer;Integrated Security=SSPI;"

没有用户/通行证


使用用户/密码进行 SQL 身份验证的连接字符串

connectionString="Server=MyServer; Database=pubs; User Id=MyUser; password= P@ssw0rd"
        providerName="System.Data.SqlClient"

另请参阅此问题,可能会对您有所帮助: Connect to SQL Server using windows authentication and specific account

【讨论】:

  • 好吧,所以我了解 windows auth 与 sql auth 位。我的用户 ID 作为使用 Windows 身份验证的 sql 用户添加到安全/登录部分。但是,当我尝试使用特定用户进行连接并使用我的用户名进行连接时,它不起作用。这种方法在生产中运行良好。
猜你喜欢
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 2013-10-30
  • 2019-03-06
相关资源
最近更新 更多