最初发布在StackOverflow ,交叉张贴在这里build议SO评论。
我需要密码保护我的应用程序中的一些操作,例如加载/保存文件,单击checkbox等。这是一个标准的C#.Net 4.0,WinForms应用程序,它将在公司networking中的Windows 7上运行。
我正要用一个用户/密码/权限(哈希值和盐值)的文本文件来滚动我自己的非常基本的系统(用大开后门读取混淆),直到经过一番search之后,我发现看起来像一个极其简单的方法 , m很难find一个不关于ASP.NET的angular色的好教程。
那么有谁知道一个或多个教程,告诉我如何:
Role或权限。
Interface ,只要问Windows,如果当前用户有权限ABC而不是太在意Windows如何计算出来。 然后我可以为每个本地/networking/ ActiveDirectory /等具体实施。 (或者如果需要的话,因为我现在不知道)。 - read if interested, but not required to answer question
只是为了确保我在这个方向上走向正确的方向,基本上我需要/希望在我的开发PC上进行testing,以确保它能为我的客户提供良好的最终用户体验。 问题是目前他们为运行我的应用程序的每台计算机运行一个自动login脚本,并且有几个不同的运营商全天使用我的应用程序。 客户希望我的应用程序的某些function的密码保护,只提供给某些运营商。 我没有任何问题,因为我已经期待了一段时间的请求,我以前没有编程authentication。
我认为值得说服我的客户给每个运营商自己的networking帐户,并分配他们想要的任何权限给该运营商或集团,以防他们需要解雇某人,更改权限等。这也意味着我只是打开几个选项他们可以将这些权限分组,但他们认为合适的基础上内部的公司政策,我真的不应该担心(但将是如果我必须自己推出,因为他们是IT部门几乎什么都不知道我的应用程序)。
从我可以告诉它也使我的生活更容易,不必处理哈希密码和encryption等,只是处理需要点击这个或那个button的angular色。
我不知道在基于.NET的应用程序中进行授权的当前“最佳实践”方法是什么。 这是我多年前在一个基于networking的应用程序中所做的工作,我写的是将所有授权function卸载到操作系统本身。 (这可能会成为一个由系统pipe理员第一个和开发人员第二个写的狡猾的黑客。
我枚举了应用程序中的所有权限,并创build了目录层次结构中的文件,以便分配给适当angular色的用户有select地使用这些权限。 (这些文件没有包含任何内容 – 如下所示,我只是检查一下用户是否可以读取该文件。)
创build标识应用程序用户angular色的Active Directory组。
分配的权限将我在前面的步骤中创build的文件读取到Active Directory组。
当用户向应用程序(基于Web的)进行身份validation时,尝试访问每个“权限”文件。 根据成功/失败,应用程序可以确定用户分配的“angular色”。
对于客户的IT部门来说,更改应用程序的权限是改变“权限”文件(如果他们需要做出根本性的改变)的ACL,或者更经常地改变用户组成员身份。
我喜欢这个方法,因为它非常好地处理了所有的“边缘情况” – 嵌套的组成员身份,来自国外森林的安全主体等。这也很好,因为如果这些权限文件被重定位到Windows Server 2012计算机,我的应用程序突然获得新的dynamic访问控制function“免费”。