相关疑难解决方法(0)

如何检查用户是否属于AD组?

起初我认为下面的代码有效,因为如果我将该组作为"IT"它正常运行,因为我的用户名在活动目录中的IT组中.我学到的是,无论我是否在IT组中拥有我的用户名,它总是返回,如果我将其更改为我所在的任何其他组,则返回始终返回false.任何帮助,将不胜感激.

    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        // tab control security for admin tab
        bool admin = checkGroup("IT");

        if ((admin == true) && (tabControl1.SelectedTab == tpHistory))
        {
            tabControl1.SelectedTab = tpHistory;
        }
        else if ((admin == false) && (tabControl1.SelectedTab == tpHistory))
        {
            tabControl1.SelectedTab = tpRequests;
            MessageBox.Show("Unable to load tab. You have insufficient privileges.",
                "Access Denied", MessageBoxButtons.OK, MessageBoxIcon.Stop);
        }
    }

    // check active directory to see if user is in Marketing department group
    private static bool checkGroup(string group)
    {
        WindowsIdentity identity …
Run Code Online (Sandbox Code Playgroud)

.net c# active-directory winforms c#-4.0

51
推荐指数
2
解决办法
8万
查看次数

使用C#查找递归组成员资格(Active Directory)

我希望得到一个用户在Active Directory中成为其成员的所有组的列表,这两个组都明确列在memberOf属性列表中,也隐式通过嵌套组成员身份列出.例如,如果我检查UserA并且UserA是GroupA和GroupB的一部分,我还想列出GroupC,如果GroupB是GroupC的成员.

为了让您更深入地了解我的应用程序,我将在有限的基础上进行此操作.基本上,我偶尔会想要进行安全检查,以便列出这些额外的会员资格.我想区分这两者,但这应该不难.

我的问题是我没有找到一种有效的方法来使这个查询工作.Active Directory上的标准文本(此CodeProject文章)显示了一种基本上是递归查找的方法.这似乎非常低效.即使在我的小域中,用户也可能拥有30多个组成员资格.这意味着为一个用户调用30多个Active Directory.

我查看了以下LDAP代码,以便一次获取所有memberOf条目:

(memberOf:1.2.840.113556.1.4.1941:={0})
Run Code Online (Sandbox Code Playgroud)

其中{0}将是我的LDAP路径(例如:CN = UserA,OU = Users,DC = foo,DC = org).但是,它不会返回任何记录.这种方法的缺点,即使它起作用,也就是我不知道哪个组是明确的,哪个是隐含的.

这就是我到目前为止所拥有的.我想知道是否有比CodeProject文章更好的方法,如果有的话,如何实现(实际代码将是美好的).我使用的是.NET 4.0和C#.我的Active Directory处于Windows 2008功能级别(它还不是R2).

.net c# active-directory

31
推荐指数
2
解决办法
3万
查看次数

标签 统计

.net ×2

active-directory ×2

c# ×2

c#-4.0 ×1

winforms ×1