2012-05-24 9 views
6

Es gibt eine neue Anwendung zur Benutzererstellung, die wir unseren Benutzern zur Verfügung gestellt haben. Diese Benutzer benötigen jedoch die Möglichkeit, Benutzer über die Anwendung zu erstellen, obwohl sie selbst keine Berechtigung zum Erstellen von Benutzern haben.C# Zugriff auf Active Directory mit verschiedenen Benutzerdaten

In C# wie imitieren Sie einen anderen Benutzer, um diese Funktionalität zu haben. Diese Anwendung primär mit System.DirectoryServices.

Code-Snippet:

DirectoryEntry dEntry = new DirectoryEntry("LDAP://OU="); 
DirectorySearcher dSearcher = new DirectorySearcher(dEntry); 
//filter just user objects 
dSearcher.SearchScope = SearchScope.Subtree; 
dSearcher.Filter = "(&(objectClass=user)(mail=" + excel_Holding_Table.Rows[i]["EmailAddress"].ToString() + "))"; 
dSearcher.PageSize = 1000; 
sResults = dSearcher.FindAll(); 
+0

Den Prozess/Dienst als Administrator ausführen? Ich weiß, wie man das manuell macht, aber ich weiß nicht, wie es in .NET automatisch funktionieren würde. – JAB

Antwort

9

Sie die direkt DirectoryEntry Klasse verwenden können, und den Benutzernamen und das Passwort angeben:

DirectoryEntry de = new DirectoryEntry(path); 

de.Username = "username"; 
de.Password = "password"; 

und Zugang Active Directory aus dem de-Objekt. Oder können Sie die WindowsIdentity Klasse verwenden und und Identitätswechsel einen Benutzer:

WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle()); 
WindowsImpersonationContext impersonatedUser = newId.Impersonate(); 

Ein vollständiges Codebeispiel finden Sie unter:

Impersonation and DirectoryEntry

0

Verwenden Sie den DirectoryEntry-Konstruktor (String, String, String, AuthenticationTypes), der anstelle von Identitätswechsel einen Benutzernamen und ein Kennwort verwendet.

DirectoryEntry directoryEntry = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/Root", @"domain\username", "password", AuthenticationTypes.Secure | AuthenticationTypes.Sealing); 

Reference

0

Sie privilegierte Berechtigungsnachweise verwenden können, um AD zu verbinden oder einen privilegierten Benutzer wie andere Antworten vorgeschlagen haben, zu imitieren.

Dies hat jedoch Auswirkungen auf die Sicherheit, da dies bedeutet, dass Ihre Benutzer diese privilegierten Anmeldeinformationen für andere, nicht autorisierte Zwecke verwenden können.

Eine sicherere Lösung wäre, einen Webdienst zu erstellen, der unter einem Dienstkonto mit entsprechenden AD-Berechtigungen ausgeführt wird. Benutzer können sich mithilfe der Windows-Authentifizierung beim Webdienst authentifizieren, und der Webdienst erstellt in ihrem Namen Benutzer. Es könnte Autorisierung verwenden, um einzuschränken, was Benutzer tun dürfen (z. B. nur Benutzer in ihrer eigenen Abteilung erstellen).