<security> von <customBinding>

Gibt die Sicherheitsoptionen für eine benutzerdefinierte Bindung an.

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

Syntax

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

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente sowie ü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.

Der Standardwert 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 sind den Algorithmen in der Spezifikation der Sicherheitsrichtliniensprache (WS-SecurityPolicy) zugeordnet.

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. Der Standardwert 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. Folgende Werte sind gültig:

- ClientEntropy: Der Sitzungsschlüssel basiert auf Schlüsseldaten, die vom Client zur Verfügung gestellt werden.
- ServerEntropy: Der Sitzungsschlüssel basiert auf Schlüsseldaten, die vom Server zur Verfügung gestellt werden.
- CombinedEntropy: Der Sitzungsschlüssel basiert auf Schlüsseldaten, die vom Client und Dienst zur Verfügung gestellt werden.

Der Standardwert ist CombinedEntropy.

Dieses Attribut ist vom Typ SecurityKeyEntropyMode.
messageProtectionOrder Legt die Reihenfolge fest, in der Sicherheitsalgorithmen der Nachrichtenebene auf die Nachricht angewendet werden. Gültige Werte sind:

- 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. Gültige Werte sind:

– 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. Der Standardwert ist true.
requireSecurityContextCancellation Optional. Ein boolescher Wert, der angibt, ob ein Sicherheitskontext abgebrochen und beendet werden soll, wenn er nicht mehr benötigt wird. Der Standardwert 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 der Standardwert false.

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. Folgende Werte sind gültig:

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

Der Standardwert ist Strict.

Dieses Element ist vom Typ SecurityHeaderLayout.

authenticationMode-Attribut

Wert BESCHREIBUNG
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

defaultAlgorithm-Attribut

Wert BESCHREIBUNG
Basic128 Verwendet Aes128-Verschlüsselung, Sha1 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
Basic192 Verwendet Aes192-Verschlüsselung, Sha1 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
Basic256 Verwendet Aes256-Verschlüsselung, Sha1 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
Basic256Rsa15 Verwendet Aes256-Nachrichtenverschlüsselung, Sha1 für den Nachrichtenhash und Rsa15 für Key Wrap.
Basic192Rsa15 Verwendet Aes192 für die Nachrichtenverschlüsselung, Sha1 für den Nachrichtenhash und Rsa15 für Key Wrap.
TripleDes Verwendet TripleDes-Verschlüsselung, Sha1 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
Basic128Rsa15 Verwendet Aes128 für die Nachrichtenverschlüsselung, Sha1 für den Nachrichtenhash und Rsa15 für Key Wrap.
TripleDesRsa15 Verwendet TripleDes-Verschlüsselung, Sha1 für den Nachrichtenhash und Rsa15 für Key Wrap.
Basic128Sha256 Verwenden Sie Aes128 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa-oaep-mgf1p für den Key Wrap.
Basic192Sha256 Verwendet Aes192 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
Basic256Sha256 Verwendet Aes256-Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
TripleDesSha256 Verwendet TripleDes für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa-oaep-mgf1p für Key Wrap.
Basic128Sha256Rsa15 Verwendet Aes128 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa15 für Key Wrap.
Basic192Sha256Rsa15 Verwendet Aes192 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa15 für Key Wrap.
Basic256Sha256Rsa15 Verwendet Aes256 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa15 für Key Wrap.
TripleDesSha256Rsa15 Verwendet TripleDes für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtenhash und Rsa15 für Key Wrap.

Untergeordnete Elemente

Element BESCHREIBUNG
<issuedTokenParameters> Gibt ein aktuell ausgegebenes Token an. Dieses Element ist vom Typ IssuedTokenParametersElement.
<localClientSettings> Legt die Sicherheitseinstellungen für einen lokalen Client für diese Bindung fest. Dieses Element ist vom Typ LocalClientSecuritySettingsElement.
<localServiceSettings> 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 Bindungsmöglichkeiten der benutzerdefinierten Bindung.

Bemerkungen

Weitere Informationen zur Verwendung dieses Elements finden Sie unter SecurityBindingElement-Authentifizierungsmodi und Gewusst wie: Erstellen einer benutzerdefinierten Bindung mithilfe des 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 mit dem <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 mit dem security-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-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 zum Ausführen dieses Beispiels finden Sie unter Benutzerdefinierte Bindungssicherheit.

<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