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ı

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

  1. adlı BindingElementCollectionsınıfın outputBec bir örneğini oluşturun.

  2. 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.

  3. SymmetricSecurityBindingElement öğesini Collection<T> sınıfının Add yöntemini çağırarak outputBec koleksiyonuna 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 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

Ayrıca bakınız