使用Windows身份验证对活动目录进行身份验证,并提供依赖于组的视图

时间:2013-05-30 21:31:53

标签: c# asp.net asp.net-mvc windows iis-7

问题

我是一名ASP.NET新手,他的任务是创建一个多用户密码管理系统,以便在安全的内部网中使用。本质上,用户将通过Windows身份验证自动登录,然后根据他们的组为他们提供适当的视图。例如,组“admin”的用户将能够访问所有密码条目,组开发人员的用户将能够访问属于“Developers”活动目录组中的用户的所有密码条目。用户应该能够创建,更新和隐藏(删除)密码条目。

到目前为止我有什么

到目前为止,我基本上已经找到了什么,不会是不可能的,以及研究技术。 Windows身份验证本身似乎很容易,但是当我启用角色提供程序时,它会中断,这似乎是为用户提供不同视图所必需的。 “休息”我的意思是特定用户仍然被认可,但整个团体都没有。

必须自动提供不同的观点,我已经提出了两种技术来实现这一目标:

  1. 检查家庭控制器上的角色(组),并提供适当的视图。但是,这需要一长串杂乱的'if'语句。

  2. 提供公共视图,允许或禁止根据组查看某些元素。这需要在视图中放入大量逻辑,这是我理解的不合适。

  3. 将有一个password.cs模型类,它将包含密码条目的所有信息,包括哪些组应该有权访问它。我真的不能想到任何其他必要的模型,因为不需要存储用户信息。

    安全问题

    据我所知,将这些敏感数据存储在一个位置可能会导致灾难。密码将使用我也可以访问的预先存储库进行适当加密。我会帮助这个领域。此外,密码将无法作为系统上的纯文本查看,以避免肩膀冲浪,但将显示为星号,并且可以复制到用户剪贴板。

    我的问题

    基本上我想要一些关于如何构建系统的建议以及使用Windows身份验证启用活动目录授权的最简单方法。我想就如何为用户提供适当的视图以及不同区域如何组合起来提出一些建议。我没有明确要求任何有关密码安全方面的帮助,但任何见解或讨论都会受到热烈欢迎。从本质上讲,我非常感谢任何帮助,教程链接或建议读物。

    我的工具

    我可以使用Visual Studio professional 2010,MVC 4.0和.NET framework 4.0,以及对服务器的标准(非管理员)访问。

    我将能够提供明天我现有的实验代码(格林威治标准时间22:30,明天早上我会回到办公室)。如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我已经实现了两个解决方案,我必须将MVC与Active X Directory集成。有多种解决方案(例如,来自企业库的安全应用程序块)。但是,我最终使用了AzMan和RoleManagerAzManProvider。我最终得到了这个组合,因为我不需要部署任何额外的库。

我从这篇文章开始:[http://msdn.microsoft.com/en-us/library/ff649313.aspx][1]

即使它是为ASP.NET编写的,我也可以将它用于MVC。我将我的XML本地策略存储放在app_data下面并配置了web配置

<add name="LocalPolicyStore" connectionString="msxml://~/app_data/MyPolicyStore.xml" />

这对我很好,因为策略存储允许我定义应用程序角色,并且在我的客户端部署时,将这些角色映射到AD帐户。

之后,我实现了我在全局过滤器中注册的自定义授权属性。这是我决定用户登录应用程序时将重定向到哪个页面的地方。最后,我使用基于组名的控制器上的标准授权属性。

我考虑过编写一组自定义编辑器模板和显示模板,这些模板会考虑角色,这样我就可以根据用户的应用程序角色为控件渲染不同的UI(渲染跨度而不是输入)。

虽然您的应用程序可能已经编写过,但我希望这会有所帮助。