Freigeben über


<security> von <customBinding>

Gibt die Sicherheitsoptionen für eine benutzerdefinierte Bindung an.

Schemahierarchie

<<system.serviceModel>>
  <bindings>
    <customBinding>
      <binding>
        <security> von <customBinding>

Syntax

<security 
   allowSerializedSigningTokenOnReply="Boolean"
   authenticationMode="AuthenticationMode"
      defaultAlgorithmSuite="SecurityAlgorithmSuite"
   includeTimestamp="Boolean"
      requireDerivedKeys="Boolean"
   keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy" 
messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
      messageSecurityVersion="WSSecurityJan2004/WSSecurityXXX2005"
   requireDerivedKeys="Boolean"
   requireSecurityContextCancellation="Boolean"
   requireSignatureConfirmation="Boolean"
      securityHeaderLayout=
              "Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
   includeTimestamp="Boolean">
   <issuedTokenParameters />
   <localClientSettings />
   <localServiceSettings />
   <secureConversationBootstrap />
</security>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Attribut Beschreibung

allowSerializedSigningTokenOnReply

Optional. Ein boolescher Wert, der angibt, ob ein serialisiertes Token für eine Antwort verwendet werden kann. Der Standardwert ist false. Bei Verwendung einer Dualbindung ist true die Standardeinstellung, und vorgenommene Einstellungen werden ignoriert.

authenticationMode

Optional. Gibt den Authentifizierungsmodus an, der zwischen Initiator und Beantworter verwendet wird. Unten werden alle Werte aufgeführt.

Die Standardeinstellung ist sspiNegotiated.

defaultAlgorithmSuite

Optional. Legt die Nachrichtenverschlüsselungs- und Key Wrap-Algorithmen fest. Die Algorithmen und die Schlüsselgröße werden durch die SecurityAlgorithmSuite-Klasse ermittelt. Diese Algorithmen entsprechen den in der Security Policy Language (WS-SecurityPolicy)-Spezifikation angegebenen Algorithmen.

Mögliche Werte werden unten gezeigt. Der Standardwert ist Basic256.

Dieses Attribut wird verwendet, wenn mit einer anderen Plattform gearbeitet wird, die eine Reihe von Nicht-Standardalgorithmen verwendet. Sie sollten die Stärken und Schwächen der relevanten Algorithmen kennen, wenn Sie Änderungen an dieser Einstellung vornehmen. Dieses Attribut ist vom Typ SecurityAlgorithmSuite.

includeTimestamp

Ein boolescher Wert, der angibt, ob jede Nachricht einen Zeitstempel enthält. Die Standardeinstellung ist true.

keyEntropyMode

Gibt an, wie Schlüssel für das Sichern von Nachrichten berechnet werden. Schlüssel können nur auf dem Schlüsselmaterial des Clients, des Diensts oder auf einer Kombination von beiden basiert werden. Gültige Werte sind:

  • ClientEntropy: Der Sitzungsschlüssel wird auf Schlüsseldaten basiert, die vom Client zur Verfügung gestellt werden.

  • ServerEntropy: Der Sitzungsschlüssel wird auf Schlüsseldaten basiert, die vom Server zur Verfügung gestellt werden.

  • CombinedEntropy: Der Sitzungsschlüssel wird auf Schlüsseldaten basiert, die vom Client und Dienst zur Verfügung gestellt werden.

Die Standardeinstellung ist CombinedEntropy.

Dieses Attribut ist vom Typ SecurityKeyEntropyMode.

messageProtectionOrder

Legt die Reihenfolge fest, in der Sicherheitsalgorithmen der Nachrichtenebene auf die Nachricht angewendet werden. Folgende Werte sind gültig:

  • SignBeforeEncrypt: Erst signieren, dann verschlüsseln.

  • SignBeforeEncryptAndEncryptSignature: Erst signieren, dann verschlüsseln, dann die Signatur verschlüsseln.

  • EncryptBeforeSign: Erst verschlüsseln, dann signieren.

Der Standardwert hängt von der verwendeten Version von WS-Security ab. Der Standardwert ist SignBeforeEncryptAndEncryptSignature, wenn WS-Security 1.1 verwendet wird. Der Standardwert ist SignBeforeEncrypt, wenn WS-Security 1.0 verwendet wird.

Dieses Attribut ist vom Typ MessageProtectionOrder.

messageSecurityVersion

Optional. Legt die verwendete Version von WS-Security fest. Folgende Werte sind gültig:

  • WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11

  • WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

  • WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

Der Standardwert ist WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 und kann in XML durch Default ausgedrückt werden. Dieses Attribut ist vom Typ MessageSecurityVersion.

requireDerivedKeys

Ein boolescher Wert, der angibt, ob Schlüssel von den Originalprüfschlüsseln abgeleitet werden können. Die Standardeinstellung ist true.

requireSecurityContextCancellation

Optional. Ein boolescher Wert, der angibt, ob ein Sicherheitskontext abgebrochen und beendet werden soll, wenn er nicht mehr benötigt wird. Die Standardeinstellung ist true.

requireSignatureConfirmation

Optional. Ein boolescher Wert, der angibt, ob die WS-Security-Signaturbestätigung aktiviert ist. Bei der Einstellung true werden Nachrichtensignaturen vom Beantworter bestätigt. Wenn die benutzerdefinierte Bindung für gegenseitige Zertifikate oder für die Verwendung ausgestellter Token konfiguriert ist (WSS 1.1-Bindungen), ist dieses Attribut standardmäßig true. Andernfalls ist false der Standardwert.

Mit der Signaturbestätigung wird bestätigt, dass der Dienst unter vollständiger Berücksichtigung einer Anforderung antwortet.

securityHeaderLayout

Optional. Gibt die Reihenfolge der Elemente im Sicherheitsheader an. Gültige Werte sind:

  • Strict: Gemäß dem Prinzip "declare before use" werden die Elemente deklariert, bevor sie dem Sicherheitsheader hinzugefügt werden.

  • Lax: Die Elemente werden dem Sicherheitsheader in einer beliebigen Reihenfolge gemäß der WSS: SOAP Message Security-Spezifikation hinzugefügt.

  • LaxWithTimestampFirst: Die Elemente werden dem Sicherheitsheader in einer beliebigen Reihenfolge gemäß der WSS: SOAP Message Security-Spezifikation hinzugefügt. Ausnahme: Das erste Element im Sicherheitsheader muss ein wsse:Timestamp-Element sein.

  • LaxWithTimestampLast: Die Elemente werden dem Sicherheitsheader in einer beliebigen Reihenfolge gemäß der WSS: SOAP Message Security-Spezifikation hinzugefügt. Ausnahme: Das letzte Element im Sicherheitsheader muss ein wsse:Timestamp-Element sein.

Die Standardeinstellung ist Strict.

Dieses Element ist vom Typ SecurityHeaderLayout.

Untergeordnete Elemente

Element Beschreibung

<issuedTokenParameters>

Gibt ein aktuell ausgegebenes Token an. Dieses Element ist vom Typ IssuedTokenParametersElement.

<localClientSettings>-Element

Legt die Sicherheitseinstellungen für einen lokalen Client für diese Bindung fest. Dieses Element ist vom Typ LocalClientSecuritySettingsElement.

<localServiceSettings>-Element

Legt die Sicherheitseinstellungen für einen lokalen Dienst für diese Bindung fest. Dieses Element ist vom Typ LocalServiceSecuritySettingsElement.

<secureConversationBootstrap>

Gibt die Standardwerte an, die zum Initiieren eines sicheren Konversationsdiensts verwendet werden.

Übergeordnete Elemente

Element Beschreibung

<binding>

Definiert alle Bindungsfähigkeiten der benutzerdefinierten Bindung.

Hinweise

Weitere Informationen über zur Verwendung dieses Elements finden Sie unter SecurityBindingElement Authentication Modes und How To: Create a Custom Binding Using the SecurityBindingElement.

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie die Sicherheitsfunktion mit einer benutzerdefinierten Bindung konfiguriert wird. Es zeigt, wie Sicherheit auf Nachrichtenebene und ein sicherer Transport mithilfe einer benutzerdefinierten Bindung aktiviert wird. Dies ist hilfreich, wenn ein sicherer Transport zum Übertragen von Nachrichten zwischen Client und Dienst erforderlich ist und daher die Nachrichten auf Nachrichtenebene gesichert werden müssen. Diese Konfiguration wird nicht von Bindungen unterstützt, die vom System bereitgestellt werden.

Die Dienstkonfiguration definiert eine benutzerdefinierte Bindung, die die durch das TLS/SSL-Protokoll und die Windows-Nachrichtensicherheit gesicherte TCP-Kommunikation unterstützt. Die benutzerdefinierte Bindung verwendet ein Dienstzertifikat zum Authentifizieren des Diensts auf Transportebene und zum Sichern der Nachrichten während der Übertragung zwischen Client und Dienst. Dies wird durch das <sslStreamSecurity>-Bindungselement umgesetzt. Das Dienstzertifikat wird mithilfe eines Dienstverhaltens konfiguriert.

Außerdem verwendet die benutzerdefinierte Bindung Nachrichtensicherheit mit dem Windows-Anmeldeinformationstyp. Dies ist der Standard-Anmeldeinformationstyp. Dies wird durch das <security> von <customBinding>-Bindungselement umgesetzt. Sowohl der Client als auch der Dienst werden mithilfe von Sicherheitsfunktionen auf Nachrichtenebene authentifiziert, wenn der Kerberos-Authentifizierungsmechanismus verfügbar ist. Ist der Kerberos-Authentifizierungsmechanismus nicht verfügbar, wird die NTLM-Authentifizierung verwendet. NTLM authentifiziert den Client für den Dienst, aber authentifiziert nicht den Dienst für den Client. Das <security> von <customBinding>-Bindungselement ist für die Verwendung des SecureConversation-Authentifizierungstyps konfiguriert, durch den eine Sicherheitssitzung auf dem Client und dem Dienst erstellt wird. Dies ist erforderlich, damit der Duplexvertrag des Diensts funktioniert. Weitere Informationen zu diesem Beispiel finden Sie unter Custom Binding Security.

<configuration>
  <system.serviceModel>
    <services>
      <service 
          name="Microsoft.ServiceModel.Samples.CalculatorService"
          behaviorConfiguration="CalculatorServiceBehavior">
        <host>
          <baseAddresses>
            <!-- use following base address -->
            <add baseAddress="net.tcp://localhost:8000/ServiceModelSamples/Service"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                    binding="customBinding"
                    bindingConfiguration="Binding1" 
                    contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />
        <!-- the mex endpoint is exposed at net.tcp://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>

    <bindings>
      <!-- configure a custom binding -->
      <customBinding>
        <binding name="Binding1">
          <security authenticationMode="SecureConversation"
                     requireSecurityContextCancellation="true">
          </security>
          <textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8"/>
          <sslStreamSecurity requireClientCertificate="false"/>
          <tcpTransport/>
        </binding>
      </customBinding>
    </bindings>

    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="False" />
          <serviceCredentials>
            <serviceCertificate findValue="localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Siehe auch

Verweis

<customBinding>
SecurityElement
SecurityBindingElement
CustomBinding

Weitere Ressourcen

Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings
How To: Create a Custom Binding Using the SecurityBindingElement
Custom Binding Security