Freigeben über


<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 und übergeordnete Elemente beschrieben.

Attribute

Merkmal Description
allowSerializedSigningTokenOnReply Wahlfrei. Ein boolescher Wert, der angibt, ob ein serialisiertes Token für die Antwort verwendet werden kann. Der Standardwert ist false. Bei Verwendung einer dualen Bindung wird die Einstellung standardmäßig ignoriert, und alle vorgenommenen true Einstellungen werden ignoriert.
authenticationMode Wahlfrei. Gibt den Authentifizierungsmodus an, der zwischen dem Initiator und dem Responder verwendet wird. Alle Werte finden Sie unten.

Der Standardwert lautet sspiNegotiated.
defaultAlgorithmSuite Wahlfrei. Legt die Nachrichtenverschlüsselung und Schlüsselumbruchalgorithmen fest. Die Algorithmen und die Schlüsselgrößen werden von der SecurityAlgorithmSuite Klasse bestimmt. Diese Algorithmen entsprechen denen, die in der Spezifikation der Sicherheitsrichtliniensprache (WS-SecurityPolicy) angegeben sind.

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

Dieses Attribut wird verwendet, wenn Sie mit einer anderen Plattform arbeiten, die sich für eine Reihe von Algorithmen entscheidet, die sich von der Standardeinstellung unterscheiden. Sie sollten sich der Stärken und Schwächen der relevanten Algorithmen bewusst sein, wenn Sie Änderungen an dieser Einstellung vornehmen. Dieses Attribut ist vom Typ SecurityAlgorithmSuite.
includeTimestamp Ein boolescher Wert, der angibt, ob Zeitstempel in jeder Nachricht enthalten sind. Der Standardwert lautet true.
keyEntropyMode Gibt die Art und Weise an, wie Schlüssel zum Sichern von Nachrichten berechnet werden. Schlüssel können nur auf dem Clientschlüsselmaterial basieren, nur auf dem Dienstschlüsselmaterial oder einer Kombination aus beiden. Gültige Werte sind

- ClientEntropy: Der Sitzungsschlüssel basiert auf Schlüsseldaten, die vom Client bereitgestellt werden.
- ServerEntropy: Der Sitzungsschlüssel basiert auf Schlüsseldaten, die vom Server bereitgestellt werden.
- CombinedEntropy: Der Sitzungsschlüssel basiert auf den Schlüsseldaten, die vom Client und Dienst bereitgestellt werden.

Der Standardwert lautet CombinedEntropy.

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

- SignBeforeEncrypt: Signieren Sie zuerst, und verschlüsseln Sie dann.
- SignBeforeEncryptAndEncryptSignature: Signieren Sie zuerst, verschlüsseln Sie dann die Signatur.
- EncryptBeforeSign: Verschlüsseln Sie zuerst, und signieren Sie dann.

Der Standardwert hängt von der verwendeten Version der verwendeten WS-Security ab. Der Standardwert ist SignBeforeEncryptAndEncryptSignature bei Verwendung von WS-Security 1,1. Der Standardwert ist SignBeforeEncrypt die Verwendung von WS-Security 1,0.

Dieses Attribut ist vom Typ MessageProtectionOrder.
Messagesecurityversion Wahlfrei. Legt die verwendete Version von WS-Security fest. Gültige Werte umfassen Folgendes:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

Der Standardwert ist WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 und kann einfach Defaultim XML-Code ausgedrückt werden. Dieses Attribut ist vom Typ MessageSecurityVersion.
requireDerivedKeys Ein boolescher Wert, der angibt, ob Schlüssel von den ursprünglichen Korrekturschlüsseln abgeleitet werden können. Der Standardwert lautet true.
requireSecurityContextCancellation Wahlfrei. Ein boolescher Wert, der angibt, ob der Sicherheitskontext abgebrochen und beendet werden soll, wenn er nicht mehr benötigt wird. Der Standardwert lautet true.
requireSignatureConfirmation Wahlfrei. Ein boolescher Wert, der angibt, ob WS-Security Signaturbestätigung aktiviert ist. Bei Festlegung auf true" werden Nachrichtensignaturen vom Antwortenden bestätigt. Wenn die benutzerdefinierte Bindung für gegenseitige Zertifikate konfiguriert ist oder für die Verwendung ausgestellter Token (WSS 1.1-Bindungen) konfiguriert ist, ist dieses Attribut standardmäßig auf true. Andernfalls lautet falseder Standardwert .

Die Signaturbestätigung wird verwendet, um zu bestätigen, dass der Dienst in vollem Bewusstsein für eine Anfrage reagiert.
securityHeaderLayout Wahlfrei. Gibt die Reihenfolge der Elemente im Sicherheitsheader an. Gültige Werte sind

- Strict: Elemente werden dem Sicherheitsheader gemäß dem allgemeinen Prinzip "deklarieren vor Verwendung" hinzugefügt.
- Lax: Elemente werden dem Sicherheitsheader in beliebiger Reihenfolge hinzugefügt, die zu WSS: SOAP-Nachrichtensicherheit bestätigt wird.
- LaxWithTimestampFirst: Elemente werden dem Sicherheitsheader in jeder Reihenfolge hinzugefügt, die zu WSS: SOAP Message security bestätigt wird, mit der Ausnahme, dass das erste Element im Sicherheitsheader ein wsse:Timestamp-Element sein muss.
- LaxWithTimestampLast: Elemente werden dem Sicherheitsheader in jeder Reihenfolge hinzugefügt, die zu WSS: SOAP-Nachrichtensicherheit bestätigt wird, mit der Ausnahme, dass das letzte Element im Sicherheitsheader ein wsse:Timestamp-Element sein muss.

Der Standardwert lautet Strict.

Dieses Element ist vom Typ SecurityHeaderLayout.

authenticationMode-Attribut

Wert Description
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

defaultAlgorithm-Attribut

Wert Description
Basic128 Verwenden Sie die Aes128-Verschlüsselung, Sha1 für den Nachrichtendigest und Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic192 Verwenden Sie die Aes192-Verschlüsselung, Sha1 für den Nachrichtendigest, Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic256 Verwenden Sie die Aes256-Verschlüsselung, Sha1 für den Nachrichtendigest, Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic256Rsa15 Verwenden Sie Aes256 für die Nachrichtenverschlüsselung, Sha1 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
Basic192Rsa15 Verwenden Sie Aes192 für die Nachrichtenverschlüsselung, Sha1 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
Tripledes Verwenden Sie tripleDes-Verschlüsselung, Sha1 für den Nachrichtendigest, Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic128Rsa15 Verwenden Sie Aes128 für die Nachrichtenverschlüsselung, Sha1 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
TripleDesRsa15 Verwenden Sie tripleDes-Verschlüsselung, Sha1 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
Basic128Sha256 Verwenden Sie Aes128 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic192Sha256 Verwenden Sie Aes192 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic256Sha256 Verwenden Sie Aes256 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa-oaep-mgf1p für den Schlüsselumbruch.
TripleDesSha256 Verwenden Sie TripleDes für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa-oaep-mgf1p für den Schlüsselumbruch.
Basic128Sha256Rsa15 Verwenden Sie Aes128 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
Basic192Sha256Rsa15 Verwenden Sie Aes192 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
Basic256Sha256Rsa15 Verwenden Sie Aes256 für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.
TripleDesSha256Rsa15 Verwenden Sie TripleDes für die Nachrichtenverschlüsselung, Sha256 für den Nachrichtendigest und Rsa15 für den Schlüsselumbruch.

Untergeordnete Elemente

Element Description
<issuedTokenParameters> Gibt ein aktuelles ausgestelltes Token an. Dieses Element ist vom Typ IssuedTokenParametersElement.
<localClientSettings> Gibt die Sicherheitseinstellungen eines lokalen Clients für diese Bindung an. Dieses Element ist vom Typ LocalClientSecuritySettingsElement.
<localServiceSettings> Gibt die Sicherheitseinstellungen eines lokalen Diensts für diese Bindung an. Dieses Element ist vom Typ LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Gibt die Standardwerte an, die zum Initiieren eines sicheren Unterhaltungsdiensts verwendet werden.

Übergeordnete Elemente

Element Description
<verbindlich> Definiert alle Bindungsfunktionen der benutzerdefinierten Bindung.

Bemerkungen

Weitere Informationen zur Verwendung dieses Elements finden Sie unter SecurityBindingElement Authentication Modes and How to: Create a Custom Binding Using the SecurityBindingElement.

Example

Das folgende Beispiel veranschaulicht, wie Die Sicherheit mithilfe einer benutzerdefinierten Bindung konfiguriert wird. Es zeigt, wie Sie eine benutzerdefinierte Bindung verwenden, um die Sicherheit auf Nachrichtenebene zusammen mit einem sicheren Transport zu ermöglichen. Dies ist nützlich, wenn ein sicherer Transport erforderlich ist, um die Nachrichten zwischen Client und Dienst zu übertragen, und gleichzeitig müssen die Nachrichten auf Nachrichtenebene sicher sein. Diese Konfiguration wird von vom System bereitgestellten Bindungen nicht unterstützt.

Die Dienstkonfiguration definiert eine benutzerdefinierte Bindung, die TCP-Kommunikation mit TLS/SSL-Protokoll und Windows-Nachrichtensicherheit unterstützt. Die benutzerdefinierte Bindung verwendet ein Dienstzertifikat, um den Dienst auf Transportebene zu authentifizieren und die Nachrichten während der Übertragung zwischen Client und Dienst zu schützen. Dies wird durch das <sslStreamSecurity-Bindungselement> erreicht. Das Dienstzertifikat wird mithilfe eines Dienstverhaltens konfiguriert.

Darüber hinaus verwendet die benutzerdefinierte Bindung die Nachrichtensicherheit mit dem Windows-Anmeldeinformationstyp – dies ist der Standardanmeldeinformationstyp. Dies wird durch das Sicherheitsbindungselement erreicht. Client und Dienst werden mithilfe der Sicherheit auf Nachrichtenebene authentifiziert, wenn der Kerberos-Authentifizierungsmechanismus verfügbar ist. Wenn der Kerberos-Authentifizierungsmechanismus nicht verfügbar ist, wird die NTLM-Authentifizierung verwendet. NTLM authentifiziert den Client für den Dienst, authentifiziert den Dienst jedoch nicht für den Client. Das Sicherheitsbindungselement ist für die Verwendung SecureConversation von authenticationType konfiguriert, was zur Erstellung einer Sicherheitssitzung sowohl auf dem Client als auch auf dem Dienst führt. Dies ist erforderlich, um den Duplexvertrag des Diensts für die Arbeit zu aktivieren. Weitere Informationen zum Ausführen dieses Beispiels 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