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