2009-08-17 7 views
0

Ich untersuche derzeit WCF, um zwischen einem Server und einem Programm zu kommunizieren, das als Fassade für ein Legacy-System fungiert.Kann das IIS-Netzwerkbenutzerkonto einen WCF-Dienst aufrufen, der unter einem anderen Konto ausgeführt wird?

Schnellübersicht: Benutzer < -> ASP .NET Web-Seiten < -> WCF < -> Fassadenprogramm < -> Altsystem

Ich will nicht IIS laufen mit den Rechten der Fassade laufen erforderlich Programm, also habe ich über WCF nachgedacht, um zwischen den zwei Teilen der Software zu kommunizieren.

Ist das möglich? Soll ich etwas anderes als WCF verwenden, um zwischen den beiden .NET-Projekten zu kommunizieren?

+0

jede endgültige Lösung mit dem vollständigen Quellcode Beispiel arbeiten darüber? – Kiquenet

Antwort

2

ich mit diesem Ansatz keine unmittelbaren Probleme nicht - WCF für Inter-Prozess/Inter-Maschine-Kommunikation in .NET im Allgemeinen die beste Wahl ist aufgrund der Vielzahl von Optionen über die Konfiguration unterstützt wird.

In Bezug auf die Authentifizierung von IIS -> WCF-Dienst, können Sie mit Standard-Windows-Authentifizierung starten nur von der WCF-Client-Proxy zur Verfügung gestellt. IIS stellt eine Verbindung mit dem WCF-Dienst mithilfe der Netzwerkdienstanmeldeinformationen her, die sich auf demselben Computer automatisch authentifizieren sollten.

Wenn Sie den WCF-Dienst auf einem anderen Computer hosten, müssen Sie das Netzwerkdienstkonto auf dem IIS-Computer dem Rechner zuordnen, auf dem der Dienst gehostet wird. Verwenden Sie dazu den Computerkontonamen im Format DOMÄNE \ COMPUTERNAME $ .

Alternativ können Sie Ihre eigene NetworkCredentials Instanz auf der Client-Proxy für ein bestimmtes Domänenkonto initialisieren. Dies ist weniger sicher, da Sie das Kennwort in Ihren Code aufnehmen müssen, es ist jedoch in der Praxis einfacher zu verwenden.

Der WCF-Dienst-Host-Prozess kann unter Verwendung einer andere Prozessidentität, führt und diese Prozessidentität zum Ausführen nachgeschalteten Komponenten.

0

Das Konto sollte keine Rolle.

+0

Es tut, wenn es kein dedizierter Server ist. Sie möchten nicht, dass jemand Programme auf Ihrem Server ausführt. Vielleicht hat er eine ähnliche Situation. – Havenard

+0

Wenn das der Fall ist, dann sind die Chancen, dass er es gesagt haben sollte. Er hat nichts über Sicherheit gesagt. –

+0

Es ist ein dedizierter Server. –

1

Ich würde eine Socket-Verbindung machen. Frontend hört sich einen Port an, die .NET-Webseite verbindet sich mit ihm und tauscht Daten aus ... keine Sorgen um den Benutzerevel.

+1

Haben Sie diese Art von Programm schon geschrieben und beibehalten? Die meisten Leute haben nicht. Für sie wird WCF viel einfacher zu entwickeln und zu pflegen sein. –