2009-08-10 4 views
2

Ich habe zwei Maschinen, wir nennen sie Maschine A und Maschine B. Maschine B führt einen Windows-Dienst aus, der in C# .net als das lokale Systemkonto geschrieben wird. Maschine A teilt dem Dienst von Maschine B (mit WCF) mit, eine Datei im Netzwerk zu öffnen. Da das lokale System kein Netzwerkbenutzer ist, hat es keinen Zugriff auf Netzwerkdateien und kann die Datei nicht öffnen. Derzeit lese ich Dateien von Maschine A und serialisiere sie als Zeichenfolgen für Maschine B und schreibe sie dann lokal auf B. Ich habe darüber nachgedacht, ein generisches Netzwerkkonto für Maschine B zu erstellen, damit es Zugriff auf das Netzwerk haben kann ist unerwünscht. Gibt es eine Möglichkeit, Maschine B Dateien mit dem Benutzerkonto von Maschine A zu öffnen? Ich habe mir die Identity-Klassen des System-Sicherheitsprinzipals angesehen. Würde dies ein Fall sein, um sie zu verwenden?Wie kann ich Benutzeranmeldeinformationen zur Verwendung auf einem Remotecomputer mit WCF senden?

Antwort

3

MSDN - How to: Impersonate a Client on a Service

einen Client auf einem Windows Communication Foundation (WCF) -Dienst Impersonating ermöglicht es dem Service-Aktionen im Namen des Kunden durchzuführen. Für Aktionen unterliegt Zugriffssteuerungsliste (ACL) prüft, wie der Zugriff auf Verzeichnisse und Dateien auf einem Computer oder Zugang zu einer SQL Server-Datenbank, ist die ACL-Prüfung gegen das Client-Benutzerkonto

Vergessen Sie auch nicht, Ihren Dienst für die Verwendung der Windows-Authentifizierung zu konfigurieren und eine unterstützte Bindung zu verwenden.

+0

Okay, sieht aus wie ich habe es funktioniert meistens, aber wenn ich client.ClientCredentials.Windows.ClientCredentials.UserName überprüfen, scheint es leer zu sein. Es sieht so aus, als würde dies nicht meine Anmeldeinformationen aus Active Directory abrufen, aber alles andere scheint sich so zu verhalten, wie es sollte. – MGSoto

+0

@MGSoto, ClientCredentials.Windows.ClientCredentials.UserName dient nicht zum Abrufen von Clientanmeldeinformationen, sondern zum Bereitstellen einer anderen Gruppe von Windows-Anmeldeinformationen (im Grunde eine Eigenschaft nur festlegen), um den aktuellen Benutzer Verwendung Environment.UserName oder System.Windows zu erhalten .Forms.SystemInformation.UserName ... aber es gibt auch andere Möglichkeiten –

+0

Okay, das macht Sinn. Ich hatte gehofft, dass es mir zeigen würde, was es als der eingeloggte Benutzer betrachten würde. Irgendeine Idee, warum ich immer noch Zugang erhalten könnte, wurde Fehler verweigert? Ich folge MSDN Wort für Wort, der einzige Unterschied ist, anstatt Zahlen hinzuzufügen, ich öffne eine Datei. – MGSoto

Verwandte Themen