使用SQL Server用户和角色作为Intranet Web应用程序的授权数据库?

时间:2011-09-23 20:35:06

标签: sql-server asp.net-mvc-3 authorization intranet

我有一个问题,我觉得应该有一个简单的答案,但由于某种原因,我无法完全理解它。

我正着手开发ASP.NET MVC3内部网应用程序,目前我正致力于设计身份验证和应用程序。授权。我们被迫在我们的环境中使用基本身份验证,并且我们使用Active Directory,因此通常需要处理授权部分。不幸的是,我在活动目录中的角色/用户层次结构并不反映我在应用程序中对角色的需求,因此我将不得不定义自己的角色。

我正在使用SQL Server,所以我最初考虑为所有DML使用存储过程,然后在SQL Server中创建角色并在角色中添加用户,然后通过这些角色控制对存储过程的访问。我也在想我可以查询那些SQL Server数据库级用户&角色,以便将其用作应用程序本身的授权信息源。这最初似乎是一个好主意,但它似乎不是一个受欢迎的(对于一个,似乎对它们的产生的问题有点冗长和混乱)。或者,让Web应用程序模拟用户对服务器的所有查询,然后使用我自己的模式实现用户/角色数据库,并仅在应用程序端进行授权会更好吗?

最初似乎在应用程序和数据库方面进行授权对安全性来说是一件好事,使用SQL Server用户/角色对象意味着用户和角色数据不需要存储在两个地方。

我确实在Best practice on users/roles on SQL Server for a web application看到了一些可能相关的讨论,但我认为这是一个不同的问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议创建一个sql登录名,Web应用程序将使用该登录名连接到sql server。这样您就不会冒充任何可能被删除,将来禁用的特定AD帐户,并且可以在SQL Server中严格控制用户。

然后我建议在您的应用程序中实现基于角色的身份验证。这将使您能够创建自定义应用程序的用户和角色,然后将用户分配给它们。这样,如果用户尝试访问不允许其角色的资源,则不会执行任何操作。这是一个基于此原则http://www.codeproject.com/KB/web-security/rolesbasedauthentication.aspx的演示应用程序。