Sandi data dalam ICredentials tidak lulus dari klien Layanan WCF WCF di .NET Framework 4,5

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 3082119
Gejala
Di klien dasar komunikasi Windows (WCF), Anda membuat antarmuka ICredentials baru dari kelasNetworkCredential dengan menggunakan Nama pengguna dan sandi yang ditentukan. Kemudian, Anda membuat panggilan WCF metode kontrak yang memerlukan ICredentials sebagai sebuah argumen. Anda akan menemukan bahwa setelah Anda dilemparkan ICredentials yang diterima dalam Layanan WCF kembali ke kredensial Jaringan, properti sandi memegang string kosong. Namun, properti Usernamemasih memegang nilai yang benar dan benar.
Penyebab
Ini adalah masalah yang diketahui yang diperkenalkan di Microsoft .NET Framework 4.0 saat properti baru, SecurePassword, ditambahkan ke kelas NetworkCredential. Properti ini akan menimpa string sandi asli saat properti SecurePassword deserialized di sebelah layanan. Properti SecurePasswordadalah jenis SecureString. Desain, tidak serial dan dikirim. Namun, ini akan menimpa string sandi asli dengan menggunakan nilai yang kosong. Perilaku ini juga merupakan bagian dari rancangan.
Pemecahan masalah
Untuk memperbaiki masalah ini, Anda harus memberikan informasi Nama pengguna dan sandi untuk layanan secara terpisah dari kredensial Jaringan. Anda dapat melakukannya dengan membuat objek aplikasi tekan terus kredensial dan mengirimkan kredensial metode Layanan WCF baru yang menerima objek sebagai metode argumen. Karena objek aplikasi ini berisi informasi sensitif, werecommend bahwa data yang dikirim melalui sambungan terenkripsi ke layanan WCF dengan menggunakan https baik transportasi keamanan atau pesan lapisan keamanan.
Informasi lebih lanjut
Followingexample menunjukkan layanan WCF yang mereproduksi masalah. Layanan WCF memiliki kontrak berikut ini:

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
antarmuka publik IService
{

[OperationContract]
string GetData(ICredentials value);
}

Klien menggunakan layanan sebagai berikut:

iCredService.ServiceClient svcClient = new iCredService.ServiceClient();
ICredentials iCred = System.Net.NetworkCredential baru ("ABC", "1234");
Hasil string = hasil = svcClient.GetData(iCred);

Menggunakan Visual Studio dan pengaturan titik henti pada layanan nilai. Kata sandi akan kosong. Saat Anda memeriksa Microsoft Visual Studio lokal windows, Anda melihat teks berikut ini:

-value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
Domain""string
Sandi""string
+SecurePassword{System.Security.SecureString}System.Security.SecureString
UserName "ABC" string
ICredentials NetworkCredential SecurePassword WCF

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 3082119 - Tinjauan Terakhir: 08/28/2015 19:15:00 - Revisi: 1.0

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

  • kbmt KB3082119 KbMtid
Tanggapan