MessageProtectionOrder Sabit listesi

Tanım

İletiyi koruyan işlemlerin sırasını belirtir.

public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder = 
Public Enum MessageProtectionOrder
Devralma
MessageProtectionOrder

Alanlar

EncryptBeforeSign 2

SOAP iletisi için dijital imza oluşturulmadan önce SOAP iletisinin şifrelendiğini belirtir.

SignBeforeEncrypt 0

SOAP iletisinin herhangi bir bölümü şifrelenmeden önce SOAP iletisi için dijital imzanın oluşturulduğunu, ancak dijital imzanın şifrelenmediğini belirtir.

SignBeforeEncryptAndEncryptSignature 1

SOAP iletisinin herhangi bir bölümü şifrelenmeden önce SOAP iletisi için dijital imzanın oluşturulduğunu ve dijital imzanın şifrelendiğini belirtir.

Örnekler

Aşağıdaki örnek bir SymmetricSecurityBindingElement öğe oluşturur ve özelliğini MessageProtectionOrder SignBeforeEncrypt olarak ayarlar.

public static Binding CreateCustomBinding()
{
    // Create an empty BindingElementCollection to populate,
    // then create a custom binding from it.
    BindingElementCollection outputBec = new BindingElementCollection();

    // Create a SymmetricSecurityBindingElement.
    SymmetricSecurityBindingElement ssbe =
        new SymmetricSecurityBindingElement();

    // Set the algorithm suite to one that uses 128-bit keys.
    ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128;

       // Set MessageProtectionOrder to SignBeforeEncrypt.
    ssbe.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;

    // Use a Kerberos token as the protection token.
    ssbe.ProtectionTokenParameters = new KerberosSecurityTokenParameters();

    // Add the SymmetricSecurityBindingElement to the BindingElementCollection.
    outputBec.Add ( ssbe );
    outputBec.Add(new TextMessageEncodingBindingElement());
    outputBec.Add(new HttpTransportBindingElement());

    // Create a CustomBinding and return it; otherwise, return null.
    return new CustomBinding(outputBec);
}
Public Shared Function CreateCustomBinding() As Binding 
    ' Create an empty BindingElementCollection to populate, 
    ' then create a custom binding from it.
    Dim outputBec As New BindingElementCollection()
    
    ' Create a SymmetricSecurityBindingElement.
    Dim ssbe As New SymmetricSecurityBindingElement()
    
    ' Set the algorithm suite to one that uses 128-bit keys.
    ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128
    
    ' Set MessageProtectionOrder to SignBeforeEncrypt.
    ssbe.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt
    
    ' Use a Kerberos token as the protection token.
    ssbe.ProtectionTokenParameters = New KerberosSecurityTokenParameters()
    
    ' Add the SymmetricSecurityBindingElement to the BindingElementCollection.
    outputBec.Add(ssbe)
    outputBec.Add(New TextMessageEncodingBindingElement())
    outputBec.Add(New HttpTransportBindingElement())
    
    ' Create a CustomBinding and return it; otherwise, return null.
    Return New CustomBinding(outputBec)

End Function

Açıklamalar

Bu numaralandırma, ve SymmetricSecurityBindingElement.MessageProtectionOrder sınıflarının SymmetricSecurityBindingElementAsymmetricSecurityBindingElement özelliğiyle AsymmetricSecurityBindingElement.MessageProtectionOrder birlikte kullanılır.

İleti özet saldırısına karşı savunmasızsa (örneğin, ileti kısaysa veya entropi düşükse), SignBeforeEncryptAndEncryptSignature veya EncryptBeforeSign seçeneğini kullanmalısınız. (Entropi bir sunucu, istemci veya her ikisi tarafından sağlanan rastgele verilerdir ve verileri şifrelemek ve şifresini çözmek için paylaşılan anahtar oluşturmak için kullanılır.)

Sipariş Edilen Nedir?

WCF, SOAP ileti güvenliği kullanılarak iletilerin güvenliğinin nasıl sağlandığını belirleyen üç farklı koruma düzeyi sunar. Varsayılan değer SignBeforeEncryptAndEncryptSignature'tır. Bu ayar önce iletiyi imzalar, ileti gövdesini şifreler ve ardından XML imzasını şifreler. Bu, imzaya karşı başarılı bir şifreleme tahmin saldırısı olasılığını azaltır.

Ancak, varsayılanı kullanmanın performans üzerindeki etkileri vardır. Aslında, artan güvenlik için performansın bir dezavantajı vardır. İmzanın şifrelenmesi performansı yüzde 10 ile yüzde 40 arasında düşürebilir. İletinin veri içeriği düşük değerliyse ve performans aktarım hızı daha önemliyse SignBeforeEncrypt kullanın. Bu ayarda, imza özeti düz metin olarak gönderilir ve bu nedenle ileti düşük entropideki tahmin ve doğrulama saldırılarına karşı daha savunmasızdır.

Yalnızca Özel Bağlamalar

özelliğini değiştirmek MessageProtectionOrder için özel bir güvenlik bağlaması oluşturulması gerekir. Özel bağlamalar oluşturma hakkında daha fazla bilgi için bkz . User-Defined Bağlamaları Oluşturma. Belirli bir kimlik doğrulama modu için özel bağlama oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Belirtilen Kimlik Doğrulama Modu için SecurityBindingElement Oluşturma.

Şunlara uygulanır

Ayrıca bkz.