Aracılığıyla paylaş


Desteklenmeyen senaryolar

Çeşitli nedenlerle, Windows Communication Foundation (WCF) bazı belirli güvenlik senaryolarını desteklemez. Örneğin, Windows XP Home Edition SSPI veya Kerberos kimlik doğrulama protokollerini uygulamaz ve bu nedenle WCF bu platformda Windows kimlik doğrulaması ile bir hizmet çalıştırmayı desteklemez. Windows XP Home Edition altında WCF çalıştırılırken kullanıcı adı/parola ve HTTP/HTTPS tümleşik kimlik doğrulaması gibi diğer kimlik doğrulama mekanizmaları desteklenir.

Kimliğe bürünme senaryoları

İstemciler zaman uyumsuz çağrılar yaparken kimliğine bürünülen kimlik akışı yapamayabilir

WCF istemcisi, kimliğine bürünme altında Windows kimlik doğrulaması kullanarak bir WCF hizmetine zaman uyumsuz çağrılar yaptığında, kimlik doğrulaması kimliğine bürünülen kimlik yerine istemci işleminin kimliğiyle gerçekleşebilir.

WCF kimliğe bürünme özelliğini desteklemez ve aşağıdaki koşullar mevcut olduğunda bir InvalidOperationException oluşturulur:

  • İşletim sistemi Windows XP'dir.

  • Kimlik doğrulama modu bir Windows kimliğine neden olur.

  • Impersonation özelliği OperationBehaviorAttribute olarak Requiredayarlanır.

  • Durum tabanlı güvenlik bağlam belirteci (SCT) oluşturulur (varsayılan olarak oluşturma devre dışıdır).

Durum tabanlı SCT yalnızca özel bağlama kullanılarak oluşturulabilir. Daha fazla bilgi için bkz . Nasıl yapılır: Güvenli Oturum için Güvenlik Bağlam Belirteci Oluşturma.) Kodda belirteci, veya yöntemi kullanılarak SecurityBindingElement.CreateSspiNegotiationBindingElement(Boolean) bir güvenlik bağlama öğesi (SymmetricSecurityBindingElementveya AsymmetricSecurityBindingElement) oluşturularak ve parametresi falseolarak ayarlanarak requireCancellation etkinleştirilir.SecurityBindingElement.CreateSecureConversationBindingElement(SecurityBindingElement, Boolean) parametresi SCT'nin önbelleğe alınmasını ifade eder. değerinin olarak false ayarlanması, durum tabanlı SCT özelliğini etkinleştirir.

Alternatif olarak, yapılandırmada belirteç bir <customBinding>oluşturulup öğesi eklenerek>security< ve özniteliği SecureConversation ve requireSecurityContextCancellation özniteliği trueolarak ayarlanarak authenticationMode etkinleştirilir.

Not

Önceki gereksinimler özeldir. Örneğin, CreateKerberosBindingElement bir Windows kimliğiyle sonuçlayan ancak SCT oluşturmayan bir bağlama öğesi oluşturur. Bu nedenle, Windows XP'de Required seçeneğiyle kullanabilirsiniz.

Olası ASP.NET çakışması

WCF ve ASP.NET kimliğe bürünme özelliğini etkinleştirebilir veya devre dışı bırakabilir. ASP.NET bir WCF uygulaması barındırdığında, WCF ve ASP.NET yapılandırma ayarları arasında bir çakışma olabilir. Çakışma durumunda, özelliği olarak ayarlanmadığı NotAllowedsürece Impersonation WCF ayarı önceliklidir; bu durumda ASP.NET kimliğe bürünme ayarı önceliklidir.

Derleme yükleri kimliğe bürünme altında başarısız olabilir

Kimliğine bürünülen bağlam bir derlemeyi yüklemek için erişim haklarına sahip değilse ve ortak dil çalışma zamanı (CLR) bu AppDomain için derlemeyi ilk kez yüklemeye çalışırsa, AppDomain hata önbelleğe alınır. Bu derlemeyi (veya derlemeleri) yüklemeye yönelik sonraki girişimler, kimliğe bürünme geri döndürülürken ve geri döndürülen bağlamın derlemeyi yüklemek için erişim hakları olsa bile başarısız olur. Bunun nedeni CLR'nin kullanıcı bağlamı değiştirildikten sonra yükü yeniden değerlendirmemesidir. Hatadan kurtarmak için uygulama etki alanını yeniden başlatmanız gerekir.

Not

sınıfının özelliği WindowsClientCredential için AllowedImpersonationLevel varsayılan değerdirIdentification. Çoğu durumda, kimlik düzeyi kimliğe bürünme bağlamı ek derleme yükleme haklarına sahip değildir. Bu varsayılan değerdir, bu nedenle dikkat edilmesi gereken çok yaygın bir koşuldur. Kimlik düzeyinde kimliğe bürünme, kimliğe bürünme işleminin ayrıcalığı SeImpersonate olmadığında da gerçekleşir. Daha fazla bilgi için bkz . Temsilci Seçme ve Kimliğe Bürünme.

Temsilci seçme için kimlik bilgisi anlaşması gerekir

Kerberos kimlik doğrulama protokollerini temsilci seçme ile kullanmak için, kimlik bilgisi anlaşmasıyla Kerberos protokolunu uygulamanız gerekir (bazen çok bacaklı veya çok adımlı Kerberos olarak adlandırılır). Kimlik bilgisi anlaşması olmadan Kerberos kimlik doğrulaması uygularsanız (bazen tek seferlik veya tek bacaklı Kerberos olarak adlandırılır), bir özel durum oluşur. Kimlik bilgisi anlaşması uygulama hakkında daha fazla bilgi için bkz . Windows Kimlik Doğrulama Hatalarının Hatalarını Ayıklama.

Şifreleme

SHA-256 yalnızca simetrik anahtar kullanımları için desteklenir

WCF, sistem tarafından sağlanan bağlamalarda algoritma paketini kullanarak belirtebileceğiniz çeşitli şifreleme ve imza özeti oluşturma algoritmalarını destekler. Daha iyi güvenlik için WCF, imza özet karmaları oluşturmak için Güvenli Karma Algoritması (SHA) 2 algoritmalarını( özellikle SHA-256) destekler. Bu sürüm, SHA-256'yı yalnızca Kerberos anahtarları gibi simetrik anahtar kullanımları için ve iletiyi imzalamak için X.509 sertifikasının kullanılmadığı durumlarda destekler. WCF, WinFX'te RSA-SHA256 desteğinin mevcut olmaması nedeniyle SHA-256 karması kullanan RSA imzalarını (X.509 sertifikalarında kullanılır) desteklemez.

FIPS uyumlu SHA-256 karmaları desteklenmiyor

WCF SHA-256 FIPS uyumlu karmaları desteklemez, bu nedenle SHA-256 kullanan algoritma paketleri, FIPS uyumlu algoritmaların kullanılması gereken sistemlerde WCF tarafından desteklenmez.

Kayıt defteri düzenlenirse FIPS uyumlu algoritmalar başarısız olabilir

Yerel Güvenlik Ayarlar Microsoft Yönetim Konsolu (MMC) ek bileşenini kullanarak Federal Bilgi İşleme Standartları (FIPS) uyumlu algoritmaları etkinleştirebilir ve devre dışı bırakabilirsiniz. Bu ayara kayıt defterinden de erişebilirsiniz. Ancak WCF'nin ayarı sıfırlamak için kayıt defterinin kullanılmasını desteklemediğini unutmayın. Değer 1 veya 0 dışında bir değere ayarlanırsa, CLR ile işletim sistemi arasında tutarsız sonuçlar oluşabilir.

FIPS uyumlu AES şifreleme sınırlaması

FIPS uyumlu AES şifrelemesi, kimlik düzeyinde kimliğe bürünme altındaki çift yönlü geri çağırmalarda çalışmaz.

CNG/KSP sertifikaları

Şifreleme API'si: Yeni Nesil (CNG), CryptoAPI'nin uzun vadeli değişimidir. Bu API, Windows Vista, Windows Server 2008 ve sonraki Windows sürümlerinde yönetilmeyen kodda kullanılabilir.

CNG/KSP sertifikalarını işlemek için eski CryptoAPI kullandığından .NET Framework 4.6.1 ve önceki sürümleri bu sertifikaları desteklemez. Bu sertifikaların .NET Framework 4.6.1 ve önceki sürümleriyle kullanılması özel duruma neden olur.

Bir sertifikanın KSP kullanıp kullanmadiğini söylemenin iki olası yolu vardır:

  • öğesinin bir p/invoke kısmını CertGetCertificateContextPropertyyapın ve döndürülen CertGetCertificateContextPropertyüzerinde inceleme dwProvType yapın.

  • certutil Sertifikaları sorgulamak için komut satırındaki komutu kullanın. Daha fazla bilgi için bkz . Sertifika sorunlarını gidermeye yönelik Certutil görevleri.

ASP.NET kimliğe bürünme ve ASP.NET uyumluluğu kullanılıyorsa ileti güvenliği başarısız oluyor

WCF, istemci kimlik doğrulamasının gerçekleşmesini engelleyebildiğinden aşağıdaki ayarları desteklemez:

  • ASP.NET Kimliğe Bürünme etkinleştirildi. Bu, öğesinin trueözniteliği <identity> olarak ayarlanarak impersonate Web.config dosyasında yapılır.

  • ASP.NET uyumluluk modu, serviceHostingEnvironment>trueözniteliği< olarak ayarlanarak aspNetCompatibilityEnabled etkinleştirilir.

  • İleti modu güvenliği kullanılır.

Geçici çözüm, ASP.NET uyumluluk modunu kapatmaktır. Veya ASP.NET uyumluluk modu gerekiyorsa, ASP.NET kimliğe bürünme özelliğini devre dışı bırakın ve bunun yerine WCF tarafından sağlanan kimliğe bürünme özelliğini kullanın. Daha fazla bilgi için bkz . Temsilci Seçme ve Kimliğe Bürünme.

IPv6 değişmez değer adres hatası

İstemci ve hizmet aynı makinede olduğunda ve hizmet için IPv6 değişmez değerleri kullanıldığında güvenlik istekleri başarısız olur.

Hizmet ve istemci farklı makinelerdeyse değişmez IPv6 adresleri çalışır.

Federasyon güveni ile WSDL alma hataları

WCF, federasyon güven zincirindeki her düğüm için tam olarak bir WSDL belgesi gerektirir. Uç noktaları belirtirken döngü ayarlamamaya dikkat edin. Döngülerin ortaya çıkabilmesinin bir yolu, aynı WSDL belgesinde iki veya daha fazla bağlantı içeren federasyon güven zincirlerinin WSDL indirmesini kullanmaktır. Bu sorunu oluşturabilen yaygın bir senaryo, Güvenlik Belirteci Sunucusu ve hizmetin aynı ServiceHost içinde yer aldığı federasyon hizmetidir.

Bu duruma örnek olarak aşağıdaki üç uç nokta adresine sahip bir hizmet gösteriliyor:

  • http://localhost/CalculatorService/service (hizmet)

  • http://localhost/CalculatorService/issue_ticket (STS)

  • http://localhost/CalculatorService/mex (meta veri uç noktası)

Bu bir özel durum oluşturur.

Uç noktayı başka bir yere koyarak bu senaryonun issue_ticket çalışmasını sağlayabilirsiniz.

WSDL içeri aktarma öznitelikleri kaybolabilir

WCF, WSDL içeri aktarma işlemi yaparken şablondaki bir <wst:Claims>RST öğedeki özniteliklerin izini kaybeder. Bu durum, talep türü koleksiyonlarını doğrudan içinde veya IssuedSecurityTokenRequestParameters.AdditionalRequestParameters yerine doğrudan WSFederationHttpBinding.Security.Message.TokenRequestParameters belirtirseniz <Claims> WSDL içeri aktarma işlemi sırasında gerçekleşir. İçeri aktarma özniteliklerini kaybettiğinden, bağlama WSDL aracılığıyla düzgün bir şekilde gidiş dönüş yapmaz ve bu nedenle istemci tarafında yanlıştır.

Düzeltme, içeri aktarma işlemini yaptıktan sonra bağlamayı doğrudan istemcide değiştirmektir.

Ayrıca bkz.