Nasıl yapılır: SecurityBindingElement Kullanarak Özel Bağlama Oluşturma

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ı

SecurityBindingElementolarak ayarlandığında BufferedTCP aktarım TransferMode tarafından kullanılan varsayılan kanal şekli olan kanal şeklini desteklemezIDuplexSessionChannel. Bu senaryoda kullanmak SecurityBindingElement için olarak ayarlamanız TransferModeStreamed 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, tek tek bağlama öğelerini sınıfın bir örneği tarafından temsil edilen bir koleksiyona BindingElementCollection ekler ve ardından öğesinin CustomBinding özelliğini bu nesneye eşit olarak ayarlarsınızElements. 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

Üç bağlama öğesi, tümü sınıfından türetilen ileti düzeyi güvenliğiyle SecurityBindingElement ilgilidir. Üçü , SymmetricSecurityBindingElementve AsymmetricSecurityBindingElementşeklindedirTransportSecurityBindingElement. 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.

Aktarım düzeyi 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 Taşıma Sözleşme İletisi Değişim Düzeni Sözleşme İletisi Değişim Düzeni Sözleşme İletisi Değişim Düzeni
Datagram Request Reply Duplex
Taşıma Https
OneWayBindingElement
HttpsTransportBindingElement HttpsTransportBindingElement
TCP
OneWayBindingElement
SSL veya Windows StreamSecurityBindingElement SSL veya Windows StreamSecurityBindingElement SSL veya Windows StreamSecurityBindingElement
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement
İleti 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
Karma (ileti 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.

Yordamlar

SymmetricSecurityBindingElement kullanan özel bir bağlama oluşturmak için

  1. adlı outputBecsınıfın BindingElementCollection bir örneğini oluşturun.

  2. sınıfının bir örneğini döndüren statik yöntemini M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true)çağırın SymmetricSecurityBindingElement .

  3. SymmetricSecurityBindingElement sınıfının yöntemini çağırarak Add () koleksiyonunaoutputBecCollection<T>BindingElement ekleyin.

  4. Sınıfının bir örneğini TextMessageEncodingBindingElement oluşturun ve koleksiyona (outputBec ekleyin. Bu, bağlama tarafından kullanılan kodlamayı belirtir.

  5. HttpTransportBindingElement oluşturun ve koleksiyona (outputBec ekleyin. Bu, bağlamanın HTTP aktarımını kullandığını belirtir.

  6. Sınıfının bir örneğini CustomBinding oluşturup koleksiyonu outputBec oluşturucuya geçirerek yeni bir özel bağlama oluşturun.

  7. 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 gösterildiği gibi özelliği ayarlanarak MessageProtectionOrder denetlenebilir. Diğer ikisi standart bağlamadaki ayarlar kullanılarak denetlenebilir.

Örnek

Açıklama

Aşağıdaki örnek, kullanan bir özel bağlama oluşturmak için eksiksiz bir SymmetricSecurityBindingElementiş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

Ayrıca bkz.