c#不一致的安全组成员关系

本文关键字:组成员 关系 安全 不一致 | 更新日期: 2023-09-27 18:02:49

我很抱歉,我相信这将结束。我将试着把它分成易于管理的小块。

我正在写一个处理SCCM的程序。这个程序被安全小组封锁了。如果你不是"服务器操作员"组的成员,你就不能进入。简单。我在我的开发机器(一台戴尔无线设备)上测试了一段时间,没有任何问题。当我发布测试版时,我发现在某些情况下,程序不会识别用户的安全组成员资格,因此拒绝访问。我能够重现这个问题,似乎无线的机器往往有这个问题。但是,实际情况比这更复杂。

-新映像机似乎有这个问题

-不是所有的无线机器;我的开发机器是无线的

-一个桌面(没有无线)有这个问题。(这是在一个偏远的地方,所以我不能把它分开)我认为这也是一个新鲜的图像。不过,我在同一站点的另一台计算机上进行了测试,结果很好。

-连接到以太网似乎有效果- 75%的时间它以某种方式解决了这个问题-经过一点等待。(工作在以太网和无线在那一点)

我一直在尝试在其中一台机器上设置断点,这样我就可以看到发生了什么。问题是,等我安装了VS.net,问题就自己解决了。我对远程调试知之甚少——目前正在研究这个问题。这种情况让我怀疑它是否与更新相关(图像是相当最新的,可能是一两个月?)我还编写了一个小实用程序来测试登录过程(使用相同的代码),它每次都能找到安全组。窟。

查找用户安全组的代码:(由Stack提供:))

static bool IsUserMemberOf_(string user, string group)
{ // (I realize the user parameter is superfluous in this case)
    try
    {
        DirectoryEntry entry = new DirectoryEntry("LDAP://" + TC.act_Domain, TC.act_AD_User, TC.enc_GetADPassword());
        DirectorySearcher mySearcher = new DirectorySearcher(entry);
        mySearcher.Filter = "(&(objectClass=user)(|(cn=" + TC.act_AD_User + ")(sAMAccountName=" + TC.act_AD_User + ")))";
        SearchResult result = mySearcher.FindOne();
        foreach (string GroupPath in result.Properties["memberOf"])
        {
            if (GroupPath.Contains(group))
            {
                return true;
            }
        }
    }
    catch (DirectoryServicesCOMException)
    {
    }
    return false;
}

我还尝试了另一种方法(使用Principal.IsMemberOf()),结果相同。我还调查了DNS/网络问题。不排除这种可能性,但在我所做的测试中,这似乎不是一个因素。我很茫然。如果谁有什么想法,请尽管告诉我。

谢谢

c#不一致的安全组成员关系

是的,是。net版本。我们的图像从。net 4.0开始。用4.5.2来解决这个问题。我希望在运行时出现错误,但我猜没有。

…我要把自己展示出来