MessageProtectionOrder Wyliczenie

Definicja

Określa kolejność operacji chroniących wiadomość.Specifies the order of operations that protect a message.

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

Pola

EncryptBeforeSign 2

Określa, że komunikat protokołu SOAP jest szyfrowany przed wygenerowaniem podpisu cyfrowego dla wiadomości protokołu SOAP.Specifies that the SOAP message is encrypted before a digital signature is generated for the SOAP message.

SignBeforeEncrypt 0

Określa, że podpis cyfrowy jest generowany dla komunikatu protokołu SOAP przed zaszyfrowaniem jakiejkolwiek części komunikatu protokołu SOAP, ale podpis cyfrowy nie jest szyfrowany.Specifies that a digital signature is generated for the SOAP message before any portion of the SOAP message is encrypted, but the digital signature is not encrypted.

SignBeforeEncryptAndEncryptSignature 1

Określa, że podpis cyfrowy jest generowany dla komunikatu protokołu SOAP przed zaszyfrowaniem jakiejkolwiek części komunikatu protokołu SOAP, a podpis cyfrowy jest szyfrowany.Specifies that a digital signature is generated for the SOAP message before any portion of the SOAP message is encrypted, and the digital signature is encrypted.

Przykłady

Poniższy przykład tworzy SymmetricSecurityBindingElement element i ustawia jego MessageProtectionOrder Właściwość na SignBeforeEncrypt.The following example creates a SymmetricSecurityBindingElement element and sets its MessageProtectionOrder property to SignBeforeEncrypt.

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 

Uwagi

To wyliczenie jest używane z AsymmetricSecurityBindingElement.MessageProtectionOrder właściwością AsymmetricSecurityBindingElement i SymmetricSecurityBindingElement.MessageProtectionOrder właściwością SymmetricSecurityBindingElement klas.This enumeration is used with the AsymmetricSecurityBindingElement.MessageProtectionOrder property of the AsymmetricSecurityBindingElement and the SymmetricSecurityBindingElement.MessageProtectionOrder property of the SymmetricSecurityBindingElement classes.

Jeśli komunikat jest narażony na atak typu Digest (na przykład krótki lub Entropia jest niska), należy użyć opcji SignBeforeEncryptAndEncryptSignature lub EncryptBeforeSign.If a message is vulnerable to a digest attack (for example, if the message is short or the entropy is low), you should use the SignBeforeEncryptAndEncryptSignature or EncryptBeforeSign option. (Entropia to losowe dane dostarczane przez serwer, klienta lub oba te elementy, które są używane do tworzenia klucza współużytkowanego do szyfrowania i odszyfrowywania danych).(Entropy is random data provided by a server, a client, or both, and is used to create a shared key for encrypting and decrypting data.)

Co jest uporządkowane?What Is Ordered?

Usługa WCF oferuje trzy różne poziomy ochrony, które określają sposób zabezpieczania komunikatów przy użyciu zabezpieczeń komunikatów protokołu SOAP.WCF offers three different protection levels that determine how messages are secured using SOAP message security. Wartość domyślna to SignBeforeEncryptAndEncryptSignature.The default is SignBeforeEncryptAndEncryptSignature. To ustawienie najpierw podpisuje komunikat, szyfruje treść wiadomości, a następnie szyfruje podpis XML.This setting first signs the message, encrypts the message body, and then encrypts the XML signature. Zmniejsza to prawdopodobieństwo pomyślnego ataku z odzgadywaniem kryptograficznym do podpisu.This reduces the likelihood of a successful cryptographic guessing attack against the signature.

Jednak użycie domyślnego ma wpływ na wydajność.However, using the default has performance implications. W efekcie istnieje kompromis dotyczący wydajności w celu zwiększenia bezpieczeństwa.In effect, there is a tradeoff of performance for increased security. Szyfrowanie sygnatury może zmniejszyć wydajność między 10% a 40 procent.Encrypting the signature can decrease performance between 10 percent and 40 percent. Jeśli zawartość danych komunikatu ma niską wartość, a przepustowość wydajności jest bardziej znacząca, użyj SignBeforeEncrypt.If the data content of the message is of low value, and performance throughput is more significant, use SignBeforeEncrypt. To ustawienie oznacza, że skrót sygnatury jest wysyłany w postaci zwykłego tekstu, a w rezultacie komunikat jest bardziej narażony na ataki typu "niska Entropia".With this setting, the signature digest is sent in clear text, and thus the message is more vulnerable to guess-and-verify attacks on low entropy.

Tylko powiązania niestandardoweCustom Bindings Only

Aby zmienić MessageProtectionOrder Właściwość, wymagane jest utworzenie niestandardowego powiązania zabezpieczeń.To change the MessageProtectionOrder property requires the creation of a custom security binding. Aby uzyskać więcej informacji na temat tworzenia powiązań niestandardowych, zobacz Tworzenie powiązań User-Defined.For more information about creating custom bindings, see Creating User-Defined Bindings. Aby uzyskać więcej informacji na temat tworzenia niestandardowego powiązania dla określonego trybu uwierzytelniania, zobacz How to: Create a elementu SecurityBindingElement for a Authentication Mode dla określonego trybu uwierzytelniania.For more information about creating a custom binding for a specific authentication mode, see How to: Create a SecurityBindingElement for a Specified Authentication Mode.

Dotyczy

Zobacz też