Ich habe einen WCF-Dienst, der BasicHttpBinding mit Windows-Authentifizierung verwendet. Die meisten Clients sind Domänenkonten und stellen mithilfe ihrer Standardanmeldeinformationen eine Verbindung zum Dienst her.So geben Sie Windows-Anmeldeinformationen in der WCF-Clientkonfigurationsdatei an
Jetzt möchte ich eine Verbindung zu dem Dienst von einem ASP.NET-Client herstellen, der unter einem lokalen Konto ausgeführt wird. Ich möchte mithilfe von Windows-Anmeldeinformationen (Domäne \ Benutzer und Kennwort), die für die ASP.NET-Anwendung verfügbar sind, eine Verbindung mit dem WCF-Dienst herstellen.
Ich weiß, ich kann dies in Code mit ClientBase < T> .ClientCredentials.
Gibt es eine Möglichkeit, die Anmeldeinformationen (Domäne \ Benutzer und Kennwort) in der Datei web.config des Clients anzugeben, damit ich den Code nicht ändern muss?
EDIT
Wenn es nicht in der Konfigurationsdatei durchgeführt werden kann, ist es eine Möglichkeit, von System.Net.ICredentials oder System.Net.NetworkCredential als Berechtigungsnachweis für einen WCF-Dienst? Das .NET Framework stellt diese als eine homogene Möglichkeit zur Bereitstellung von Netzwerkanmeldeinformationen bereit. Mit WCF scheint dies jedoch zugunsten eines neuen inkompatiblen Systems auf der Grundlage der nicht verwandten System.ServiceModel.Description.ClientCredentials-Klasse hinausgeworfen worden zu sein.
EDIT 2
auf die ursprüngliche Frage Marcs Antwort annehmen - es scheint, gibt es keine Möglichkeit, dies in der Client-Konfigurationsdatei zu tun ist :(
Ich sehe dies in WCF als Mangel würde - Ich akzeptiere nicht, dass Microsoft uns absichtlich davon abhalten sollte, Anmeldeinformationen in die Konfigurationsdatei zu schreiben - schließlich müssen sie irgendwo gespeichert werden, und das Framework enthält Möglichkeiten zum Verschlüsseln der Konfigurationsdatei Ich könnte ein benutzerdefiniertes BehaviorExtensionElement dafür erstellen , aber es sollte out of the box verfügbar sein.
Es ist auch ein bisschen inkonsistent: das Konfigurationselement system.net/mailSettings/smtp/network ermöglicht die Angabe von Anmeldeinformationen, also warum nicht WCF?
Bezüglich der zweiten Frage über System.Net.NetworkCredential Verwendung, wie es scheint von this blog dass es möglich ist, zumindest wenn die Windows-Authentifizierung verwenden, mit dem folgenden Code:
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);
„... in Ihrer Konfigurationsdatei, im Klartext“ ist nicht generell eine gute Sache, aber in der Konfigurationsdatei verschlüsselt ist OK. – Joe
@marc_s Ist es immer noch nicht möglich über die Konfigurationsdatei zu setzen? –
@Johnny_D: Nein, nicht so weit ich weiß. –