应用程序使用域帐户进行安全性

时间:2012-09-12 13:20:01

标签: c# security permissions dns

有没有办法在winform应用程序中为一组用户实现域身份验证?

我正在用C#编写一个应用程序,它将安装在我们商店的几台PC上。我想密码保护一部分程序功能,基本上是配置。我可以轻松地将密码硬编码到应用程序中,甚至可以创建加密密码存储,但我只希望某些用户能够访问配置表单,并且我希望使用组从我们的域集中管理这些用户。因此,属于“配置”组的任何人都可以访问该表单,按下应用按钮等。

1 个答案:

答案 0 :(得分:0)

检查用户是否在特定的Windows组WindowsPrincipal.IsInRole中,例如:

bool IsInGroup(string user, string group)
{
    using (var identity = new WindowsIdentity(user))
    {
        var principal = new WindowsPrincipal(identity);
        return principal.IsInRole(group);
    }
}

要查看当前的用途,请使用Thread.CurrentPrincipal

有关更多信息和一些讨论,请参阅c# check if the user member of a group?

但是,这是您用例的最佳解决方案吗?如果您“在[您的]商店”,指的是多个用户将使用计算机的销售点终端?在这种情况下,用户可能不希望每次都登录或注销。也许将配置移动到单独的应用程序,使用文件权限(例如对非管理器的只读)保护配置,并限制对配置应用程序的访问是一种更好的解决方案。