Ich habe ein Skript, das ausgeführt wird, wenn ein Benutzer einen neuen Benutzer anfordert.C# ASP.NET - Suche AD für aktive und "suspendierte" Benutzer
Dieses Skript nimmt den vom Benutzer angegebenen Benutzernamen und sucht nach AD, um festzustellen, ob es existiert. Dies funktioniert absolut gut, aber unsere IT-Abteilung hat Verfallsdaten auf Konten. Dies führt dazu, dass sich das Konto in einer Art "suspended" Status befindet und nicht deaktiviert wird, bis es in eine separate OU für Mitarbeiter versetzt wird, die gegangen sind.
Die C# AD-Suche ignoriert diese gesperrten Konten.
Ist jemand schon einmal auf dieses Problem gestoßen? Oder hat jemand eine Idee, wie diese Benutzer bei der Suche berücksichtigt werden können?
public static string ADSearch(string ADPart, string Alias)
{
System.DirectoryServices.DirectoryEntry dirEntry = default(System.DirectoryServices.DirectoryEntry);
System.DirectoryServices.DirectorySearcher dirSearcher = default(System.DirectoryServices.DirectorySearcher);
try
{
dirEntry = new System.DirectoryServices.DirectoryEntry("LDAP://LDAP DETAILS HERE");
dirSearcher = new System.DirectoryServices.DirectorySearcher(dirEntry);
dirSearcher.Filter = "(samaccountname=" + Alias + ")";
dirSearcher.PropertiesToLoad.Add("GivenName");
//Users first name
dirSearcher.PropertiesToLoad.Add("sn");
//Users last name
dirSearcher.PropertiesToLoad.Add("mail");
//Users e-mail
dirSearcher.PropertiesToLoad.Add("samaccountname");
//Samaccount
StringBuilder groupNames = new StringBuilder(); //stuff them in | delimited
SearchResult sr = dirSearcher.FindOne();
//return false if user isn't found
if (sr != null)
if (ADPart == "GivenName")
return sr.Properties["GivenName"][0].ToString().Replace("'", "");
else if (ADPart == "sn")
return sr.Properties["sn"][0].ToString().Replace("'", "");
else if (ADPart == "mail")
return sr.Properties["mail"][0].ToString().Replace("'", "");
else if (ADPart == "alias")
return sr.Properties["samaccountname"][0].ToString().Replace("'", "");
else
return null;
else
return null;
// return false if exception occurs
}
catch (Exception ex)
{
return ex.Message;
}
}
Könnte erwähnen, dass ich diesen Code nicht geschrieben habe und es bereits vorhanden war.
Jede Hilfe wird sehr geschätzt.
Hallo Gabriel, vielen Dank für die Details Antwort. Du weißt bestimmt, wovon du sprichst. Leider entspricht dies meinen Anforderungen nicht, da die Abfrage überhaupt keine abgelaufenen Konten anzeigt, sodass sie nicht gezählt werden können. Danke noch einmal! –
Bei dieser bestimmten Suche wird nur jeweils nach einem Konto gesucht: "(samaccountname =" + Alias + ")". Was füttert die Kontonamen auf diese Methode? –
Es gibt ein Textfeld, in dem ein Administrator einen Benutzernamen eingeben kann. Was immer sie eingeben, wird bei der Suche verwendet. –