.NET Framework 4.5 içinde WCF hizmetine bir WCF istemciden geçirilemez parola verileri ICredentials

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 3082119
Belirtiler
Bir Windows Communication Foundation (WCF) istemci, kullanıcı adı ve belirtilen parola kullanılarakNetworkCredential sınıftan yeni bir ICredentials arabirimi oluşturur. Sonra ICredentials bağımsız değişken olarak götüren bir WCF sözleşme yöntemine bir çağrı yapın. Bulduğunuz WCF hizmetine ağ kimlik bilgileri alınıp ICredentials artığını sonra Password özelliği boş bir dize içerir. Ancak, Usernameözelliği geçerli bir doğru değeri hala tutuyor.
Neden
Microsoft .NET Framework 4.0, yeni bir özellik kullanıma sunulmuştur bilinen bir sorundur, SecurePassword, eklenen NetworkCredentialsınıfı. SecurePassword özelliği hizmet tarafında serisi olduğunda bu özellik özgün parola dizesi geçersiz kılar. SecurePasswordözelliği, SecureString türüdür. Tasarım gereği, bu gönderilen ve değil sıralanmış. Ancak, boş bir değer kullanarak özgün parola dizesini değiştirir. Bu davranış da tasarım gereğidir.
Çözüm
Bu sorunu gidermek için ağ kimlik bilgisi bağımsız olarak hizmet için kullanıcı adı ve parola bilgilerini geçirmek zorunda. Kimlik bilgilerini tutacak ve nesne yöntemi bağımsız değişken olarak kabul eden yeni bir WCF hizmeti yöntemi için kimlik bilgilerini geçirmek için uygulama tanımlı nesne oluşturarak bunu yapabilirsiniz. Bu uygulama tanımlı nesne hassas bilgiler içerdiğinden, veri WCF hizmetine şifreli bir bağlantı üzerinden ya da https kullanılarak gönderilmesi werecommend güvenliği veya ileti Katmanı Güvenliği taşıma.
Daha fazla bilgi
Sorun oluşmazsa bir WCF Hizmeti followingexample gösterir. WCF hizmeti aşağıdaki sözleşme vardır:

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
Ortak arabirim IService
{

[OperationContract]
GetData(ICredentials value) dize;
}

Bir istemci hizmeti aşağıdaki gibi kullanarak:

iCredService.ServiceClient svcClient = yeni iCredService.ServiceClient();
ICredentials iCred = yeni System.Net.NetworkCredential ("ABC", "1234");
dize sonucu result = svcClient.GetData(iCred);

Visual Studio kullanarak ve bir kesme noktası'nda hizmet ayar değeri. Parola boş olacaktır. Microsoft Visual Studio yerel windows incelediğinizde, aşağıdaki metni görürsünüz:

-value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
Etki alanı"dize"
Parola"dize"
+SecurePassword{System.Security.SecureString}System.Security.SecureString
Kullanıcı adı "ABC" dizesi
ICredentials NetworkCredential SecurePassword WCF

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 3082119 - Son İnceleme: 08/30/2015 02:12:00 - Düzeltme: 1.0

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

  • kbmt KB3082119 KbMttr
Geri bildirim