Kennwortdaten in ICredentials werden nicht von einem WCF-Client auf den WCF-Dienst in.NET Framework 4.5 übergeben

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 3082119
Problembeschreibung
In Windows Communication Foundation (WCF)-Client erstellen Sie eine neue ICredentials-Schnittstelle aus derNetworkCredential -Klasse mit Benutzername und Kennwort angegeben sind. Anschließend stellen Sie einen Aufruf von einem WCF-Vertrag-Methode, die ICredentials als Argument annimmt. Sie finden die Password -Eigenschaft eine leere Zeichenfolge enthält, nach der Umwandlung der ICredentials, die in den WCF-Dienst auf Netzwerkanmeldeinformationen empfangen werden. Die Username-Eigenschaft hält jedoch weiterhin gültigen, korrigierten Wert.
Ursache
Dies ein bekanntes Problem ist, das in Microsoft.NET Framework 4.0 bei einer neuen Eigenschaft eingeführte SecurePasswordhinzugefügte NetworkCredential-Klasse. Diese Eigenschaft überschreibt die ursprüngliche Kennwortzeichenfolge SecurePassword -Eigenschaft auf der Deserialisierung. SecurePassword-Eigenschaft ist vom Typ SecureString. Es ist nicht standardmäßig serialisiert und gesendet. Allerdings wird die ursprüngliche Kennwortzeichenfolge mit einem leeren Wert überschrieben. Dieses Verhalten ist auch beabsichtigt.
Lösung
Um dieses Problem zu beheben, müssen Sie Benutzernamen und Kennwort Informationen an den Dienst unabhängig von der Netzwerkanmeldeinformationen. Hierzu erstellen ein anwendungsdefiniertes Objekt die Anmeldeinformationen und die Anmeldeinformationen einer neuen WCF Service-Methode übergeben, die das Objekt als Methodenargument akzeptiert. Da dieses Objekt anwendungsspezifische Informationen enthält, ein Eswird Daten über eine verschlüsselte Verbindung zum WCF-Dienst gesendet werden, über eine Https-transport bzw. Meldung Layer-Sicherheit.
Weitere Informationen
Die Followingexample zeigt einen WCF-Dienst, der das Problem reproduziert. Der WCF-Dienst besteht aus den folgenden Vertrag:

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
öffentliche Schnittstelle IService
{

[OperationContract]
String GetData(ICredentials value);
}

Ein Client wird den Dienst wie folgt verwenden:

iCredService.ServiceClient SvcClient = new iCredService.ServiceClient();
ICredentials iCred = neue System.Net.NetworkCredential ("ABC", "1234");
Zeichenfolge Ergebnis = Ergebnis = svcClient.GetData(iCred);

Visual Studio verwenden und Festlegen eines Haltepunkts im Dienst des Werts. Kennwort ist leer. Bei Microsoft Visual Studio lokal-Fenster sehen Sie den folgenden Text:

-value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
Domäne"Zeichenfolge"
Kennwort"Zeichenfolge"
+SecurePassword{System.Security.SecureString}System.Security.SecureString
Benutzername "ABC" Zeichenfolge
ICredentials NetworkCredential SecurePassword WCF

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 3082119 – Letzte Überarbeitung: 08/28/2015 19:14:00 – Revision: 1.0

Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5, Windows Communication Foundation 4, Windows Communication Foundation 4.5

  • kbmt KB3082119 KbMtde
Feedback