Dati ICredentials password non possono essere passati da un client WCF al servizio WCF in .NET Framework 4.5

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3082119
Sintomi
In un client Windows Communication Foundation (WCF), creare una nuova interfaccia ICredentials dalla classeNetworkCredential utilizzando il nome utente e password specificati. Quindi, si effettua una chiamata a un metodo di contratto WCF che accetta l'interfaccia ICredentials come argomento. Si trova dopo che si esegue il cast l'interfaccia ICredentials che vengono ricevuto nel servizio WCF alla credenziale di rete, la proprietà Password contiene una stringa vuota. Tuttavia, la proprietà Usernamemantiene un valore valido e corretto.
Cause
Si tratta di un problema noto che è stata introdotta in di Microsoft.NET Framework 4.0 quando una nuova proprietà, è stato aggiunto alla classe NetworkCredentialSecurePassword. Questa proprietà sovrascrive la stringa della password originale quando la proprietà SecurePassword viene deserializzata sul lato del servizio. La proprietà SecurePasswordè del tipo SecureString. Per impostazione predefinita, non è serializzata e inviata. Tuttavia, sovrascrive la stringa della password originale utilizzando un valore vuoto. Questo comportamento è anche in base alla progettazione.
Risoluzione
Per risolvere questo problema, è necessario passare le informazioni di nome utente e password del servizio indipendentemente dalle credenziali di rete. È possibile farlo mediante la creazione di un oggetto definito dall'applicazione per contenere le credenziali e passare le credenziali per un nuovo metodo di servizio WCF che accetta l'oggetto come argomento di un metodo. Poiché l'oggetto definito dall'applicazione contiene informazioni riservate, werecommend che i dati inviati tramite una connessione crittografata al servizio WCF utilizzando entrambi https trasporto livello di protezione o messaggio.
Informazioni
Il followingexample di seguito viene illustrato un servizio WCF che viene riprodotto il problema. Il servizio WCF dispone del seguente contratto:

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
IIl servizio di interfaccia pubblica
{

[OperationContract]
stringa GetData(ICredentials value);
}

Un client utilizza il servizio come segue:

iCredService.ServiceClient svcClient = iCredService.ServiceClient() nuova;
Interfaccia ICredentials iCred = nuovo System.Net.NetworkCredential ("ABC", "1234");
il risultato di stringa = risultato = svcClient.GetData(iCred);

Utilizzo di Visual Studio e l'impostazione di un punto di interruzione nel servizio del valore. La password sarà vuota. Quando si esaminano le finestre variabili locali di Microsoft Visual Studio, viene visualizzato il seguente testo:

-value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
Dominio"stringa"
Password"stringa"
+SecurePassword{System.Security.SecureString}System.Security.SecureString
Stringa "ABC" UserName
NetworkCredential SecurePassword ICredentials WCF

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 3082119 - Ultima revisione: 08/28/2015 19:16:00 - Revisione: 1.0

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

  • kbmt KB3082119 KbMtit
Feedback