Аутентификация LDAP только для учетной записи администратора - PullRequest
0 голосов
/ 27 февраля 2012

Я написал код для аутентификации пользователя LDAP Active Directory. Он аутентифицирует учетную запись всех пользователей в AD, но я хочу только аутентификацию учетной записи администратора, а не другую учетную запись пользователя (см. Код ниже). А также найдите доменное имя подключающегося DNS (см. Прикрепленное изображение).

        try
        {
            DirectoryEntry entry = new DirectoryEntry(Domain, UserName, Password);
            object nativeObject = entry.NativeObject;
            Program.fileWrite.WriteLine(DateTime.Now + "\t Login with credentials " + UserName + " and " + Password);
            return true;
        }
        catch (DirectoryServicesCOMException e)
        {
            Program.fileWrite.WriteLine(DateTime.Now + "\t " + e.Message);
            return false;
        }

login page

1 Ответ

2 голосов
/ 27 февраля 2012

Попробуйте этот код:

    public static bool ValidateCredential(string domain, string userName, string password)
    {
        using (var context = new PrincipalContext(ContextType.Domain, domain))
        {
            using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName))
            {
                if (user == null) return false;

                using (var group = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Domain Admins"))
                {
                    if (group == null) return false;

                    foreach (var member in group.GetMembers())
                    {
                        if (member.Sid.Equals(user.Sid))
                        {
                            return context.ValidateCredentials(userName, password);
                        }
                    }
                }
            }
        }

        return false;
    }
...