Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows Communication Foundation (WCF), yapılandırılabilir ancak WCF'nin desteklediği tüm güvenlik seçeneklerini yapılandırırken tam esneklik sağlamayan, sistem tarafından sağlanan çeşitli bağlamalar içerir. Bu konu, doğrudan tek tek bağlama öğelerinden özel bağlama oluşturmayı gösterir ve böyle bir bağlama oluşturulurken belirtilebilen bazı güvenlik ayarlarını vurgular. Özel bağlamalar oluşturma hakkında daha fazla bilgi için bkz. Bağlamaları Genişletme.
Uyarı
SecurityBindingElement, Buffered olarak ayarlandığında TransferMode tarafından kullanılan, TCP aktarımının varsayılan kanal şekli olan IDuplexSessionChannel kanal şeklini desteklemez. Bu senaryoda SecurityBindingElement kullanmak için TransferMode'yı Streamed olarak ayarlamanız gerekir.
Özel Bağlama Oluşturma
WCF'de tüm bağlamalar bağlama öğelerinden oluşur. Her bağlama öğesi sınıfından BindingElement türetilir. Standart sistem tarafından sağlanan bağlamalar için bağlama öğeleri sizin için oluşturulur ve yapılandırılır, ancak bazı özellik ayarlarını özelleştirebilirsiniz.
Buna karşılık, özel bağlama oluşturmak için bağlama öğeleri oluşturulur ve yapılandırılır ve bağlama öğelerinden bir CustomBinding oluşturulur.
Bunu yapmak için, tekil bağlayıcı öğelerini BindingElementCollection sınıfının bir örneği tarafından temsil edilen bir koleksiyona eklersiniz ve sonra CustomBinding öğesinin Elements özelliğini bu nesneye eşit olacak şekilde ayarlarsınız. Bağlama öğelerini şu sırada eklemeniz gerekir: İşlem Akışı, Güvenilir Oturum, Güvenlik, Bileşik Çift Yönlü, Tek yönlü, Akış Güvenliği, İleti Kodlama ve Aktarım. Listelenen tüm bağlama öğelerinin her bağlamada gerekli olmadığını unutmayın.
SecurityBindingElement
Mesaj düzeyi güvenliğiyle ilgili üç bağlayıcı eleman, hepsi de SecurityBindingElement sınıfından türetilmiştir. Üçü , TransportSecurityBindingElementve SymmetricSecurityBindingElementşeklindedirAsymmetricSecurityBindingElement. TransportSecurityBindingElement, Karma mod güvenliği sağlamak için kullanılır. İleti katmanı güvenlik sağladığında diğer iki öğe kullanılır.
Taşıma katmanı güvenliği sağlandığında ek sınıflar kullanılır.
Gerekli Bağlama Öğeleri
Bağlamada birleştirilebilen çok sayıda olası bağlama öğesi vardır. Bu birleşimlerin tümü geçerli değildir. Bu bölümde, bir güvenlik bağlamasında mevcut olması gereken öğeler açıklanmaktadır.
Geçerli güvenlik bağlamaları, aşağıdakiler de dahil olmak üzere birçok faktöre bağlıdır:
Güvenlik modu.
Aktarım protokolü.
Sözleşmede belirtilen ileti değişimi düzeni (MEP).
Aşağıdaki tabloda, önceki faktörlerin her bileşimi için geçerli bağlama öğesi yığın yapılandırmaları gösterilmektedir. Bunların en düşük gereksinimler olduğunu unutmayın. Bağlamaya ileti kodlama bağlama öğeleri, işlem bağlama öğeleri ve diğer bağlama öğeleri gibi ek bağlama öğeleri ekleyebilirsiniz.
| Güvenlik Modu | Transport | Sözleşme Mesaj Değişim Modeli | Sözleşme İletisi Değişim Düzeni | Sözleşme İletisi Değişim Düzeni |
|---|---|---|---|---|
Datagram |
Request Reply |
Duplex |
||
| Transport | Https | |||
| OneWayBindingElement | ||||
| HttpsTransportBindingElement | HttpsTransportBindingElement | |||
| TCP | ||||
| OneWayBindingElement | ||||
| SSL veya Windows StreamSecurityBindingElement | SSL veya Windows StreamSecurityBindingElement | SSL veya Windows StreamSecurityBindingElement | ||
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
| Mesaj | Http | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement (kimlik doğrulama modu = SecureConversation) |
| CompositeDuplexBindingElement | ||||
| OneWayBindingElement | OneWayBindingElement | |||
| HttpTransportBindingElement | HttpTransportBindingElement | HttpTransportBindingElement | ||
| TCP | SecurityBindingElement | SecurityBindingElement | SymmetricSecurityBindingElement (kimlik doğrulama modu = SecureConversation) | |
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
| Karışık (mesaj kimlik bilgileriyle taşıma) | Https | TransportSecurityBindingElement | TransportSecurityBindingElement | |
| OneWayBindingElement | ||||
| HttpsTransportBindingElement | HttpsTransportBindingElement | |||
| TCP | TransportSecurityBindingElement | SymmetricSecurityBindingElement (kimlik doğrulama modu = SecureConversation) | SymmetricSecurityBindingElement (kimlik doğrulama modu = SecureConversation) | |
| OneWayBindingElement | ||||
| SSL veya Windows StreamSecurityBindingElement | SSL veya Windows StreamSecurityBindingElement | SSL veya Windows StreamSecurityBindingElement | ||
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement |
SecurityBindingElements üzerinde birçok yapılandırılabilir ayar olduğunu unutmayın. Daha fazla bilgi için bkz . SecurityBindingElement Kimlik Doğrulama Modları.
Daha fazla bilgi için bkz . Güvenli Konuşmalar ve Güvenli Oturumlar.
Procedures
SymmetricSecurityBindingElement kullanan özel bir bağlama oluşturmak için
adlı BindingElementCollectionsınıfın
outputBecbir örneğini oluşturun.Statik yöntemi
M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true)'yi çağırın, bu yöntem SymmetricSecurityBindingElement sınıfının bir örneğini döndürür.SymmetricSecurityBindingElement öğesini Collection<T> sınıfının
Addyöntemini çağırarakoutputBeckoleksiyonuna ekleyin.Sınıfının bir örneğini TextMessageEncodingBindingElement oluşturun ve koleksiyona (
outputBecekleyin. Bu, bağlama tarafından kullanılan kodlamayı belirtir.HttpTransportBindingElement oluşturun ve koleksiyona (
outputBecekleyin. Bu, bağlamanın HTTP aktarımını kullandığını belirtir.Sınıfının bir örneğini CustomBinding oluşturup koleksiyonu
outputBecoluşturucuya geçirerek yeni bir özel bağlama oluşturun.Sonuçta elde edilen özel bağlama, standart WSHttpBindingile aynı özelliklerin çoğunu paylaşır. İleti düzeyi güvenlik ve Windows kimlik bilgilerini belirtir, ancak güvenli oturumları devre dışı bırakır, hizmet kimlik bilgilerinin bant dışında belirtilmesi gerekir ve imzaları şifrelemez. Sonuncusu, yalnızca 4. adımda belirtildiği şekilde MessageProtectionOrder özelliği ayarlanarak denetlenebilir. Diğer ikisi standart bağlamadaki ayarlar kullanılarak denetlenebilir.
Example
Açıklama
Aşağıdaki örnek, SymmetricSecurityBindingElement kullanan özel bir bağlantı oluşturmak için eksiksiz bir işlev sağlar.
Kod
// Create an empty CustomBinding to populate
CustomBinding binding = new CustomBinding();
// Create a SymmetricSecurityBindingElement.
SymmetricSecurityBindingElement ssbe =
SecurityBindingElement.CreateSspiNegotiationBindingElement(true);
// Add the SymmetricSecurityBindingElement to the BindingElementCollection.
binding.Elements.Add(ssbe);
binding.Elements.Add(new TextMessageEncodingBindingElement());
binding.Elements.Add(new HttpTransportBindingElement());
return new CustomBinding(binding);
Public Shared Function CreateCustomBinding() As Binding
' Create an empty Custom Binding to populate,
Dim binding As New CustomBinding()
' Create a SymmetricSecurityBindingElement.
Dim ssbe As SymmetricSecurityBindingElement
ssbe = SecurityBindingElement.CreateSspiNegotiationBindingElement(True)
' Add the SymmetricSecurityBindingElement to the BindingElementCollection.
binding.Elements.Add(ssbe)
binding.Elements.Add(New TextMessageEncodingBindingElement())
binding.Elements.Add(New HttpTransportBindingElement())
Return New CustomBinding(binding)
End Function