<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:
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:
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:
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:
Die Standardeinstellung ist Strict. Dieses Element ist vom Typ SecurityHeaderLayout. |
Untergeordnete Elemente
Element | Beschreibung |
---|---|
Gibt ein aktuell ausgegebenes Token an. Dieses Element ist vom Typ IssuedTokenParametersElement. |
|
Legt die Sicherheitseinstellungen für einen lokalen Client für diese Bindung fest. Dieses Element ist vom Typ LocalClientSecuritySettingsElement. |
|
Legt die Sicherheitseinstellungen für einen lokalen Dienst für diese Bindung fest. Dieses Element ist vom Typ LocalServiceSecuritySettingsElement. |
|
Gibt die Standardwerte an, die zum Initiieren eines sicheren Konversationsdiensts verwendet werden. |
Übergeordnete Elemente
Element | Beschreibung |
---|---|
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