Vorgehensweise: Festlegen des SicherheitsmodusHow to: Set the Security Mode

Windows Communication Foundation (WCF)-Sicherheit verfügt über drei allgemeine Sicherheitsmodi, die in den meisten vordefinierten Bindungen vorhanden sind: Transport, Nachricht und "Transport mit nachrichtenanmeldeinformationen".Windows Communication Foundation (WCF) security has three common security modes that are found on most predefined bindings: transport, message, and "transport with message credential." Zwei weitere Modi sind bindungsspezifisch: "TransportCredentialOnly" ist nur in der BasicHttpBinding und "Both" nur in der NetMsmqBinding verfügbar.Two additional modes are specific to two bindings: the "transport-credential only" mode found on the BasicHttpBinding, and the "Both" mode, found on the NetMsmqBinding. In diesem Thema werden jedoch die drei allgemeinen Sicherheitsmodi behandelt: Transport, Message und TransportWithMessageCredential.However, this topic concentrates on the three common security modes: Transport, Message, and TransportWithMessageCredential.

Diese Modi werden nicht von allen vordefinierten Bindungen unterstützt.Note that not every predefined binding supports all of these modes. In diesem Thema wird der Modus mit der WSHttpBinding-Klasse und mit der NetTcpBinding-Klasse festgelegt, und es wird veranschaulicht, wie der Modus programmgesteuert und in der Konfiguration festgelegt werden kann.This topic sets the mode with the WSHttpBinding and NetTcpBinding classes and demonstrates how to set the mode both programmatically and through configuration.

Weitere Informationen finden Sie unter WCF-Sicherheit finden Sie unter Sicherheitsübersicht, Sichern von Services, und Sichern von Diensten und Clients.For more information, see WCF security, see Security Overview, Securing Services, and Securing Services and Clients. Weitere Informationen zu den Transportmodus und Nachricht, finden Sie unter Transportsicherheit und Nachrichtensicherheit.For more information about transport mode and message, see Transport Security and Message Security.

So legen Sie den Sicherheitsmodus im Code festTo set the security mode in code

  1. Erstellen Sie eine Instanz der Bindungsklasse, die Sie verwenden.Create an instance of the binding class that you are using. Eine Liste der vordefinierten Bindungen, finden Sie unter sicherheitsbindungsarten Bindungen.For a list of predefined bindings, see System-Provided Bindings. In diesem Codebeispiel wird eine Instanz der WSHttpBinding-Klasse erstellt.This example creates an instance of the WSHttpBinding class.

  2. Legen Sie die Mode-Eigenschaft des Objekts fest, das von der Security-Eigenschaft zurückgegeben wird.Set the Mode property of the object returned by the Security property.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    

    Sie können den Modus auch auf Message festlegen, wie im folgenden Code veranschaulicht wird.Alternatively, set the mode to message, as shown in the following code.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    

    Sie können den Modus auch auf TransportWithMessageCredentials festlegen, wie im folgenden Code veranschaulicht wird.Or set the mode to transport with message credentials, as shown in the following code.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.TransportWithMessageCredential;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
  3. Sie können den Modus auch im Konstruktor der Bindung festlegen, wie im folgenden Codebeispiel veranschaulicht wird.You can also set the mode in the constructor of the binding, as shown in the following code.

    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    
    Dim b As New WSHttpBinding(SecurityMode.Message)
    

Festlegen der ClientCredentialType-EigenschaftSetting the ClientCredentialType Property

Durch Festlegen des Modus auf einen der drei Werte wird bestimmt, wie Sie die ClientCredentialType-Eigenschaft festlegen können.Setting the mode to one of the three values determines how you set the ClientCredentialType property. Wenn Sie beispielsweise die WSHttpBinding-Klasse verwenden, müssen Sie die Transport-Eigenschaft der ClientCredentialType-Klasse auf einen entsprechenden Wert festlegen, wenn der Modus auf HttpTransportSecurity festgelegt wird.For example, using the WSHttpBinding class, setting the mode to Transport means you must set the ClientCredentialType property of the HttpTransportSecurity class to an appropriate value.

So legen Sie die ClientCredentialType-Eigenschaft für den Transport-Modus festTo set the ClientCredentialType property for Transport mode

  1. Erstellen Sie eine Instanz der Bindung.Create an instance of the binding.

  2. Legen Sie die Mode-Eigenschaft auf Transport fest.Set the Mode property to Transport.

  3. Legen Sie für die ClientCredential-Eigenschaft einen geeigneten Wert fest.Set the ClientCredential property to an appropriate value. Im folgenden Code wird die Eigenschaft auf Windows festgelegt.The following code sets the property to Windows.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
    

So legen Sie die ClientCredentialType-Eigenschaft für den Message-Modus festTo set the ClientCredentialType property for Message mode

  1. Erstellen Sie eine Instanz der Bindung.Create an instance of the binding.

  2. Legen Sie die Mode-Eigenschaft auf Message fest.Set the Mode property to Message.

  3. Legen Sie für die ClientCredential-Eigenschaft einen geeigneten Wert fest.Set the ClientCredential property to an appropriate value. Im folgenden Code wird die Eigenschaft auf Certificate festgelegt.The following code sets the property to Certificate.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
    

So legen Sie die Mode-Eigenschaft und die ClientCredentialType-Eigenschaft in der Konfiguration festTo set the Mode and ClientCredentialType property in configuration

  1. Fügen Sie eine entsprechende Bindungselement auf dem <Bindungen > Element der Konfigurationsdatei.Add an appropriate binding element to the <bindings> element of the configuration file. Im folgenden Beispiel wird eine <WsHttpBinding > Element.The following example adds a <wsHttpBinding> element.

  2. Hinzufügen einer <binding> Element, und legen seine name -Attribut auf einen geeigneten Wert.Add a <binding> element and set its name attribute to an appropriate value.

  3. Hinzufügen einer <security> Element, und legen die mode -Attribut Message, Transport, oder TransportWithMessageCredential.Add a <security> element and set the mode attribute to Message, Transport, or TransportWithMessageCredential.

  4. Fügen Sie ein Transport``<transport>-Element hinzu, und legen Sie das -Attribut auf einen entsprechenden Wert fest, wenn der Modus auf clientCredential festgelegt ist.If the mode is set to Transport, add a <transport> element and set the clientCredential attribute to an appropriate value.

    Im folgenden Beispiel wird der Modus auf "Transport" festgelegt, und anschließend wird das clientCredentialType-Attribut des <transport>-Elements auf "Windows" festgelegt.The following example sets the mode to "Transport", and then sets the clientCredentialType attribute of the <transport> element to "Windows".

    <wsHttpBinding>  
    <binding name="TransportSecurity">  
        <security mode="Transport" />  
           <transport clientCredentialType = "Windows" />  
        </security>  
    </binding>  
    </wsHttpBinding >  
    

    Sie können auch den security mode auf "Message" festlegen und anschließend ein <"message">-Element angeben.Alternatively, set the security mode to "Message", followed by a <"message"> element. Im folgenden Beispiel wird der clientCredentialType auf Certificate" festgelegt.This example sets the clientCredentialType to "Certificate".

    <wsHttpBinding>  
    <binding name="MessageSecurity">  
        <security mode="Message" />  
           <message clientCredentialType = "Certificate" />  
        </security>  
    </binding>  
    </wsHttpBinding >  
    

    Die Verwendung des TransportWithMessageCredential-Werts unterliegt besonderen Bedingungen, die nachfolgend beschrieben werden.Using the TransportWithMessageCredential value is a special case, and is explained below.

Verwenden von TransportWithMessageCredentialUsing TransportWithMessageCredential

Wenn Sie den Sicherheitsmodus auf TransportWithMessageCredential festlegen, wird der tatsächliche Mechanismus, der die Sicherheitseinstellungen auf Transportebene bereitstellt, vom Transport bestimmt.When setting the security mode to TransportWithMessageCredential, the transport determines the actual mechanism that provides the transport-level security. Beispielsweise verwendet das HTTP-Protokoll Secure Sockets Layer (SSL) über HTTP (HTTPS).For example, the HTTP protocol uses Secure Sockets Layer (SSL) over HTTP (HTTPS). Daher werden alle Festlegungen der ClientCredentialType-Eigenschaft eines Transportsicherheitsobjekts (z. B. HttpTransportSecurity) ignoriert.Therefore, setting the ClientCredentialType property of any transport security object (such as HttpTransportSecurity) is ignored. Dies bedeutet, dass Sie nur den ClientCredentialType des Nachrichtensicherheitsobjekts festlegen können (für die WSHttpBinding das NonDualMessageSecurityOverHttp-Objekt).In other words, you can only set the ClientCredentialType of the message security object (for the WSHttpBinding binding, the NonDualMessageSecurityOverHttp object).

Weitere Informationen finden Sie unter wie: Verwenden von Transportsicherheit und Nachrichtenanmeldeinformationen.For more information, see How to: Use Transport Security and Message Credentials.

Siehe auchSee Also

Vorgehensweise: Konfigurieren eines Ports mit einem SSL-ZertifikatHow to: Configure a Port with an SSL Certificate
Vorgehensweise: Verwenden von Transportsicherheit und NachrichtenanmeldeinformationenHow to: Use Transport Security and Message Credentials
TransportsicherheitTransport Security
NachrichtensicherheitMessage Security
Übersicht über die SicherheitSecurity Overview
Vom System bereitgestellte BindungenSystem-Provided Bindings
<security><security>
<security><security>
<security><security>