我正在创建一个MVC 3应用程序,我正在尝试使用基于Active Directory的安全性。我的应用程序是一个门户,它管理我的团队在云环境中的软件开发生命周期的每个阶段的服务器集群。用户将能够使用此界面创建新服务器,删除现有服务器并重新启动各自环境的群集。
在较高级别,我有一个存储在数据库中的开发阶段列表,然后是一个附加到该阶段的服务器列表。例如,我们的生命周期目前是DEV-> TEST-> PROD,因此当用户访问我的应用程序的主页时,他们会看到三个选项卡,每个阶段一个。单击该选项卡将加载附加到该阶段的所有服务器的列表。这些阶段是动态的,管理员需要能够在任何给定时间从数据库中添加或删除它们。这种情况很少见,但我们可能会在将来某个时候实现Integration阶段,我的UI / Security必须能够处理这种情况。
除了处理多个阶段外,每个阶段都需要能够处理多个应用程序。例如,我的团队目前只管理一个开发团队,但我们可能很快就会在另一个团队中工作。在这种情况下,我需要在DEV,TEST和PROD级别为它们创建服务器,这些服务器将与我们现有的应用程序分开。
在捕获所有这些要求之后,我不完全确定如何在我的应用中实现安全控制。我们目前使用AD组来管理服务器权限,因此我希望能够使用这些相同的组来管理我的应用程序权限。思考过程是,如果有人具有对服务器的读访问权,那么他们也将具有对我的门户的读访问权。如果他们有sudo访问权限,那么他们将在我的门户网站中完全读取/更新/删除。
如何设计我的视图/控制器,使用AD进行身份验证,将AD组用于角色,但仍然保持应用程序安全性动态,以便我可以使用Web管理页面来控制和分离AD组哪些AD组可以访问某些页面而无需重建我的应用程序?
(MVC 3,.NET 4,IIS 7,Active Directory,Linux + Windows)