查找用户是否属于 AD 组

问题描述 投票:0回答:1

我尝试了各种方法来获取与 Active Directory 用户关联的组,但每种方法都非常慢。

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain.Text, username.Text, password.Text))
{
    UserPrincipal user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, username.Text);

    if (user != null)
    {
        int userGroupTmp = 0;

        var group1Principal = GroupPrincipal.FindByIdentity(pc, IdentityType.Name, group1.Text);
        var group2Principal = GroupPrincipal.FindByIdentity(pc, IdentityType.Name, group2.Text);
        var group3Principal = GroupPrincipal.FindByIdentity(pc, IdentityType.Name, group3.Text);
        var group4Principal = GroupPrincipal.FindByIdentity(pc, IdentityType.Name, group4.Text);

        if (group1Principal != null && user.IsMemberOf(group1Principal))
        {
            userGroupTmp = 1;
        }
        else if (group2Principal != null && user.IsMemberOf(group2Principal))
        {
            userGroupTmp = 2;
        }
        else if (group3Principal != null && user.IsMemberOf(group3Principal))
        {
            userGroupTmp = 3;
        }
        else if (group4Principal != null && user.IsMemberOf(group4Principal))
        {
            userGroupTmp = 4;
        }
        // ...
    }
}

看来无论如何都是慢的。我也尝试过

user.GetAuthorizationGroups()
但我得到了相同的结果。

有什么建议或不同的方法来获得群组吗?

我尝试了不同的方法,期望在时间方面有更好的表现。

active-directory userprincipal principalcontext
1个回答
0
投票

您可以使用 Get-ADPrincipalGroupMembership cmdlet。

例如:获取 ADPrincipalGroupMembership - 身份管理员

© www.soinside.com 2019 - 2024. All rights reserved.