Win32 LogonUser不会返回“Domain Admins”组

时间:2016-02-10 17:33:45

标签: c# active-directory ldap

我安装了AD的服务器。在此服务器中,我创建了一个用户并将其添加到“Domain Admins”组。

在C#中,我使用了win32函数LogonUser,并通过添加到“Domain Admins”组的用户进行了身份验证。验证成功但当我使用WindowsIdentity和IdentityReference检索所有组时,我没有获得“Domain Admins”Sid。

知道为什么会这样吗?

这是我正在使用的代码:

            if (LogonUser(username,
                domainName,
                password,
                (int)LogonType.LOGON32_LOGON_INTERACTIVE,
                (int)LogonProvider.LOGON32_PROVIDER_DEFAULT,
                ref logonToken) != 0)
            {
                WindowsIdentity wi = new WindowsIdentity(logonToken);
                foreach (IdentityReference oneGroup in wi.Groups)
                {
                    GroupList.Add(oneGroup.Value);
                }
                return err;
            }

请注意,oneGroup.Value包含用户所属组的Sid。

1 个答案:

答案 0 :(得分:1)

为什么要使用API​​调用?您有System.DirectoryServices.AccountManagement来执行此操作:

// Vaidate credentials
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
    return context.ValidateCredentials(userName, password);
}

// To get user groups
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, userName))
{
    return user.GetAuthorizationGroups();
}