0

问题

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

到目前为止我所拥有的

到目前为止,我基本上一直在弄清楚什么是不可能的,什么是不可能的,并研究技术。Windows 身份验证本身似乎很简单,但是当我启用角色提供程序时它会中断,这似乎是为用户提供不同视图所必需的。“中断”是指仍能识别特定用户,但不能识别整个组。

必须自动提供不同的视图,我提出了两种技术来做到这一点:

  1. 检查主控制器上的角色(组),并提供适当的视图。然而,这将需要一长串凌乱的“if”语句。

  2. 提供共同视图,并允许或禁止根据组查看某些元素。这需要在一个视图中放置很多逻辑,据我所知,这是不合适的。

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

安全问题

我知道将此类敏感数据存储在一个位置可能会导致灾难。密码将使用我也可以访问的预先存在的库进行适当加密。我会在这方面得到帮助。此外,密码将不会在系统上以纯文本形式显示,以避免肩窥,但将显示为星号,并可复制到用户剪贴板。

我的问题

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

我的工具

我可以随意使用 Visual Studio Professional 2010、MVC 4.0 和 .NET Framework 4.0,以及对服务器的标准(非管理员)访问权限。

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

4

1 回答 1

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(呈现跨度而不是输入)。

尽管您的应用程序可能已经编写好了,但我希望这会有所帮助。

查克

于 2014-11-19T16:04:58.337 回答