Heim  >  Artikel  >  Backend-Entwicklung  >  Active Directory mit C#

Active Directory mit C#

PHPz
PHPzOriginal
2024-09-03 15:33:36485Durchsuche

Active Directory mit C# dient in erster Linie der Organisation von Computern, Firmenbenutzern usw. Das Wesentliche ist ein Benutzerverwaltungssystem, das in der Regel in Unternehmensnetzwerken und für geschäftliche Zwecke verwendet wird. Ein Unternehmensadministrator organisiert den gesamten Unternehmensverlauf von den Computern, die zum Netzwerk gehören, dem Profil und den Zugriffsberechtigungen usw. Active Directory ist eine Art Datenbank wie Oracle und SQL, es verfügt über eine eigene Abfragetypsprache und einen Satz von Regeln, die auf LDAP basieren.

Syntax:

Um auf das DirectoryEntry-Objekt zuzugreifen, benötigten wir den Active Directory-Benutzernamen, das Passwort und die Serveradresse. Die Serveradresse enthält die IP-Adresse oder der Pfad von LDAP. Die Syntax sieht wie folgt aus:

LDAP://domain_name.com/DC=domain_name,DC=com

Wie funktioniert Active Directory in C#?

Active Directory ist für IT-Administratoren eine große Hilfe, denn es hilft bei der Organisation der Unternehmensbenutzer, Desktops und mehr. Es verfügt über eine vollständige hierarchische Struktur, zu welchem ​​Netzwerk gehört, was auf dem Profilbild angezeigt wird und wer auf die Speicher zugreift usw. Die meisten Unternehmen entwickeln ihre Anwendungen vom Desktop zu Webanwendungen mit formularbasierter LDAP-Authentifizierung. Gelegentlich interagieren .NET-Anwendungen mit Microsoft Active Directory (AD), um die Liste des Benutzers abzurufen, Gruppen zu suchen, die Benutzer zu authentifizieren und auch zu überprüfen, welche Benutzer zu welcher Active Directory-Gruppe gehören. Mithilfe einiger Ansätze können wir die Informationen aus der AD-Datenbank in unserer Domäne abrufen.

Es gibt verschiedene Ansätze. Einer davon ist die Nutzung des LDAP (Lightweight Directory Access Protocol). Es enthält die Klassen DirectoryEntry und DirectorySearch, die zum Namespace System.DirectoryServices gehören. Ein weiterer Ansatz besteht darin, den gesamten Satz von Klassen-Wrappern in Active Directory (AD) unter dem Namespace System.DirectoryServices.AccountManagement zu nutzen. Mithilfe der LDAP-Abfragen können wir die Informationen aus der AD-Datenbank abrufen. Diese Klasse ermöglicht den Zugriff auf das gesamte AD, die Wrapper-Klasse ermöglicht jedoch das Abrufen der Benutzer, Computerobjekte und Gruppen in AD. Die Klassen DirectoryEntry und DirectorySearch-Objekte sind schneller als das Objekt System.DirectoryServices.AccountManagement.

Zu den Grundlagen für Active Directory mit C# gehört die System.DirectoryService-Bibliothek, die bei der Abfrage mit AD-Bibliotheksroutinen hilft. Active Directory kommuniziert über die Objekte von DirectoryEntry. Diese Objekte sind die wichtigsten Verbindungen zur LDAP-Datenbank, die wir nach weiteren Objekten und Ordnern abfragen können. Für den Zugriff auf das DirectoryEntry-Objekt benötigten wir den Active Directory-Benutzernamen, das Kennwort und die Serveradresse. Die Serveradresse enthält die IP-Adresse oder der Pfad von LDAP sieht wie folgt aus:

LDAP://domain_name.com/DC=domain_name,DC=com

Beispiele für Active Directory mit C#

Um eine Verbindung mit Active Directory für Objekte von DirectoryEntry herzustellen, müssen wir den Benutzer vom Typ „Sichere Authentifizierung“ erstellen, der die sichere authentifizierte Verbindung zum Active Directory angibt. Wenn wir uns mit einem Konto des Administrators verbinden, können wir die Active Directory-Administratorfunktionen ausführen, z. B. neue Benutzer erstellen, Benutzer aktualisieren, Benutzer löschen usw.

Den Verzeichniseintrag des Verzeichnisobjekts abrufen

private DirectoryEntry Reterieve_DirectoryObject( )
{
DirectoryEntry Obj_de;
Obj_de=new DirectoryEntry("LDAP://IP_Address", "admin","password", AuthenticationTypes Secure);
return _de;
}

Rufen Sie den Benutzer aus Active Directory in C# ab

Sobald wir eine Verbindung mit Active Directory hergestellt haben, müssen wir wie folgt nach einem Objekt wie dem Abrufen eines Benutzers fragen:

private DirectoryEntry Reterieve_User(string User_Name)
{
DirectoryEntry obj_de = Reterieve_DirectoryObject( );
DirectorySearcher obj_deSearch = new DirectorySearcher();
obj_deSearch.SearchRoot = obj_de;
obj_deSearch.Filter = "(&(objectClass=user)(JOHNAccountName=" + User_Name + "))";
obj_deSearch.SearchScope = SearchScope.Subtree;
SearchResult getPath = obj_deSearch.FindOne();
if (!(getPath == null))
{
obj_de = new DirectoryEntry(getPath.Path, "administrator", "password", AuthenticationTypes.Secure);
return obj_de;
}
else
{
return null;
}
}

Der obige Code erklärt, wie der Benutzer abhängig von seinen Anmeldeinformationen aus dem Active Directory abgerufen wird. Wir müssen eine bestimmte Active Directory-Abfragesprache verwenden, die in Klammern den Namen wie „JohnAccountName“ und den Benutzernamen wie in Active Directory enthält. Sobald Sie den DirectoryEntry gefunden haben, können Sie das neue DirectoryEntry-Objekt codieren, das mit dem Ergebnis verknüpft ist, und die Anmeldedaten des Administrators in der Verbindung verwenden.

Erstellen Sie einen authentifizierten Benutzer

Um einen authentifizierten Benutzer für Active Directory zu erstellen, müssen wir die gültige LDAP-Pfadzeichenfolge an den DirectoryEntry-Klassenkonstruktor übergeben. Sie folgt dem Format LDAP://Doamin_name. Sehen wir uns die folgende Methode an:

private bool AuthenticateUser(string domain_name, string user_name, string password)
{
bool result = false;
try
{
DirectoryEntry obj_de = new DirectoryEntry("LDAP://" + domainName, userName, password);
DirectorySearcher obj_dsearch = new DirectorySearcher(obj_de);
SearchResult _sResult = null;
sResult = obj_dsearch.FindOne();
result = true;
}
catch
{
result = false;
}
return result;
}

Ändern Sie die Benutzerdetails in Active Directory in C#

Um die Eigenschaften eines Active Directory-Objekts in C# zu ändern, ist es in C# ganz einfach, zunächst auf die DirectoryEntry-Eigenschaftsfelder zuzugreifen und die Werte nach Bedarf zu ändern, bevor überprüft wird, ob sie null sind oder nicht, und dann schließlich die Funktion aufzurufen ComminChanges, um die vorgenommenen Änderungen auszuführen und zu speichern. Sehen wir uns den Code unten an, der zeigt, dass er die Namenseigenschaft des Benutzers ändert

DirectoryEntry obj_de = Reterieve_User ("smith.rio");
if (obj_de!= null)
{
if (obj_de.Properties["displayName"] != null && obj_de.Properties["displayName"].Value != null)
{
de.Properties["displayName"].Value = "Smith, Rio (Welcome)";
de.CommitChanges();
}
}

The above code describes the CommitChanges(), which will save the changes made in the Active Directory. The most important thing is that whatever changes are made will not be immediately visible in the applications of Active Directory like users of Active Directory and computers in the control panel it takes around 5-30 minutes to visible during changes because it needs to synchronize over the servers all through the network.

Querying Multiple Users in Active Directory with C# ASP .NET

The code above explained was to query the single DirectoryEntry object, whereas if we required for the list of objects we need to use the type SearchResultCollection joined with obj_deSearch, to search out all the things instead of finding one,

SearchResultCollection findUsers = retrieve_allUsers();
if (findUsers!= null && findUsers.Count > 0)
{
foreach (SearchResult getUser in findUsers)
{
DirectoryEntry obj_de = getUser.GetDirectoryEntry();
}
}

Conclusion

In this article, I have explained about the Active Directory and how to retrieve details of users, system usage, groups, and also to authenticate the user. By using some classes, we can easily retrieve the details from the active directory (AD) database. Active Directory with C# is a foremost tool for enterprise networks and for businesses. When designing with web applications which suit for desktop applications to the web to make powerful organizations.

Das obige ist der detaillierte Inhalt vonActive Directory mit C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:JSON-Parser in C#Nächster Artikel:JSON-Parser in C#