访问SQL服务器没有从ASP.NET的域直接权限

问题描述:

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

最好的问候,

+0

现在,我可能会误解这个问题,但是您是否需要创建一个数据库用户(在SqlServer中)并在您的Web应用程序连接字符串中使用它的凭据?最终用户凭证与访问数据库没有任何关系...... – 2010-04-15 08:31:54

+0

我处于使用窗口身份验证的域环境中。您的解决方案无法工作。 – 2010-04-15 08:44:05

是 - 创建数据库服务器上的SQL用户,并使用这一个SQL用户帐户来访问数据库,所有用户(谁使用他们的域帐户验证到您的系统)。

这是一种非常常见的情况,它允许您轻松地对该帐户可用的访问进行细粒化,而不是试图在SQL服务器上管理多个域样式帐户。

丰盛这里连接字符串选项:

http://www.connectionstrings.com

同样在这里同一个相当不错的MSDN文章:

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

+0

您提供的示例是SQL身份验证,而不是窗口身份验证。 – 2010-04-15 08:38:47

+0

事实上 - 你要求一个这样做的方法,不涉及授予用户对SQL框的权限(这将是Windows认证)。 – Paddy 2010-04-15 09:02:44

+0

SQL身份验证允许您在连接字符串中指定用户和密码,但不能在连接字符串中指定用户 – 2010-04-15 09:14:36

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

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