Laden...

PS ImpersonationManager

Erstellt von inflames2k vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.972 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 10 Jahren
PS ImpersonationManager

Beschreibung:

Der PS ImpersonationManager ist eine kleine Klassensammlung, die es erlaubt die Anwendung unter einem beliebigen Benutzer laufen zu lassen.

Oft lese ich, auch hier im Forum, das Leute Probleme bei der Impersonation haben. Auch habe ich die Impersonation bisher immer, wenn ich sie brauchte neu implementiert. Mit der kleinen Bibliothek will ich also mir, und vorallem euch helfen.

Die Verwendung ist Grundlegend sehr einfach. Zur Impersonation ist eine Instanz der Klasse ImpersonationManager zu erstellen. Die Klasse bietet dabei 2 Konstruktoren, über die jeweils Konfigurationsinformationen übergeben werden.

In Variante 1 wird eine ImpersonationSettings übergeben, welche die Daten des Nutzers enthält, unter dem die Anwendung laufen soll.

Das folgende Snippet zeigt die Verwendung des Konstruktors Beispielhaft:


ImpersonationSettings settings = new ImpersonationSettings();
settings.UserName = "Foo";
settings.Password = "Bar";
// die Domain kann leer bleiben wenn der Benutzer auf dem lokalen System vorhanden ist
settings.Domain = "Baz"; 

ImpersonationManager impManager = new ImpersonationManager(settings);

In der 2. Variante wird der Pfad zu einer Konfigurationsdatei übergeben, welche die Einstellungen enthält. Dabei muss die Konfigurationsdatei den folgenden Aufbau haben:


<ImpersonationSettings>
    <UserName>Foo</UserName>
    <Password>Bar</Password>
    <!-- Auch hier ist die Verwendung der Domain optional -->
    <Domain>Baz</Domain>
</ImpersonationSettings>

Der Aufruf des Konstruktors könnte zum Beispiel so aussehen:


ImpersonationManager impManager = new ImpersonationManager("ConfigImpersonation.xml");

Nachdem eine Instanz der ImpersonationManager erstellt wurde, kann die Anwendung den Benutzerkontext auch schon ändern. Dazu stellt der ImpersonationManager die Methode Impersonate bereit. Dieser sind keine Parameter zu übergeben, die Anmeldedaten des Nutzers sind ja bereits bekannt.

Das folgende Snippet zeigt die Verwendung:


impManager.Impersonate();

Um während der Programmlaufzeit zwischen dem Benutzer, unter dem die Anwendung gestartet wurde und dem "Impersonations"-Nutzer zu wechseln (was zum Beispiel hilfreich ist, bei Operationen die nur temporär zugänglich sein sollen), kann durch Aufruf der Methode ReleaseImpersonation die Anwendungsidentität zurück gesetzt werden.

Zur Überprüfung, ob die Anwendung "impersoniert" ist, kann der Wert der Property "IsImpersonated" überprüft werden.

Schlagwörter: Impersonation, ImpersonationManager, Anwendung unter anderem Nutzer ausführen

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |