Аутентификация LDAP только для учетной записи администратора
Я написал код для аутентификации пользователя 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;
}
1 ответ
Решение
Попробуйте этот код:
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;
}