【问题标题】:Access sql server without directly permission in domain from ASP.NET从 ASP.NET 访问域中没有直接权限的 sql server
【发布时间】:2010-04-15 08:21:39
【问题描述】:

情况是这样的。所有机器和用户都在同一个域中。我们在域环境中。有一些 sql server 2005/2008 存储数据。域中有一个使用 Window 身份验证的 ASP.NET 站点。现在,我们需要从 sql server 读取数据并使用 SqlDataSource 和 GridView 显示它们。但是大多数用户没有直接访问数据库的权限。是否有任何解决方案可以在不授予用户权限的情况下从数据库中获取数据并将其显示在网站上?

最好的问候,

【问题讨论】:

  • 现在,我可能误解了这个问题,但您不只需要创建一个数据库用户(在 SqlServer 中)并在您的 Web 应用程序连接字符串中使用其凭据吗?最终用户凭据与访问数据库没有任何关系...
  • 我在使用窗口身份验证的域环境中。您的解决方案无法正常工作。

标签: asp.net sql-server


【解决方案1】:

是的 - 在数据库服务器上创建一个 SQL 用户,并使用这个 SQL 用户帐户为您的所有用户(使用他们的域帐户对您的系统进行身份验证)访问数据库。

这是一种非常常见的情况,它使您可以轻松地细化该帐户的可用访问权限,而不是尝试在您的 SQL 服务器上管理多个域样式帐户。

这里有很多连接字符串选项:

http://www.connectionstrings.com

这里还有一篇相当不错的 MSDN 文章:

http://msdn.microsoft.com/en-us/library/ms998300.aspx

【讨论】:

  • 您提供的示例是 SQL 身份验证,而不是窗口身份验证。
  • 确实 - 您要求的方法不涉及授予用户对 SQL 框的权限(这将是 Windows 身份验证)。
  • SQL Authentication 允许在连接字符串中指定用户和密码,但不能在连接字符串中指定用户
  • @Yongwei Xing - 是的,没错。您设置了一个 sql 用户并使用该用户名/密码为每个人连接。根本不使用登录到应用程序的用户上下文。如果您绝对需要连接的用户上下文,那么您将需要使用 windows auth。
  • @Yongwei Xing - 我认为你在这里漏掉了一点。用户使用他们的 Windows 凭据连接到您的应用程序和您的域。在应用程序内部,在连接字符串中指定用户名/密码,为访问数据库而创建。
【解决方案2】:

我可能误解了您的问题,但如果您要避免明确地必须单独授予每个用户的数据库权限,您可以通过向您需要的所有用户授予 Active Directory 安全组的权限来解决此问题授予访问权限是成员。单个用户将从组继承权限。

但是,这里还有另一个问题,这可能意味着启用 SQL 身份验证是一种更简单的解决方案。除非在域中启用了 Kerberos 身份验证(或者 Web 服务器与数据库服务器在同一台物理机器上),否则 Web 服务器将无法将用户的凭据传递给数据库服务器进行身份验证 - 所谓双跳问题。谷歌搜索“windows double hop”了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多