Delen via


<beveiliging> van <customBinding>

Hiermee geeft u de beveiligingsopties voor een aangepaste binding.

<configuratie>
  <system.serviceModel>
    <Bindings>
      <customBinding>
        <Bindend>
          <Beveiliging>

Syntaxis

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

Kenmerken en elementen

In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven

Kenmerken

Kenmerk Beschrijving
allowSerializedSigningTokenOnReply Optioneel. Een Booleaanse waarde die aangeeft of een geserialiseerd token kan worden gebruikt bij het beantwoorden. De standaardwaarde is false. Wanneer u een dubbele binding gebruikt, wordt de standaardinstelling true genegeerd en worden alle instellingen genegeerd.
authenticationMode Optioneel. Hiermee geeft u de verificatiemodus op die wordt gebruikt tussen de initiator en de responder. Zie hieronder voor alle waarden.

De standaardwaarde is sspiNegotiated.
defaultAlgorithmSuite Optioneel. Hiermee stelt u de berichtversleuteling en sleutelterugloopalgoritmen in. De algoritmen en de sleutelgrootten worden bepaald door de SecurityAlgorithmSuite klasse. Deze algoritmen worden toegewezen aan de algoritmen die zijn opgegeven in de WS-SecurityPolicy-specificatie (Security Policy Language).

Mogelijke waarden worden hieronder weergegeven. De standaardwaarde is Basic256.

Dit kenmerk wordt gebruikt bij het werken met een ander platform dat kiest voor een set algoritmen die afwijken van de standaardinstelling. U moet rekening houden met de sterke en zwakke punten van de relevante algoritmen bij het aanbrengen van wijzigingen in deze instelling. Dit kenmerk is van het type SecurityAlgorithmSuite.
includeTimestamp Een Booleaanse waarde die aangeeft of tijdstempels zijn opgenomen in elk bericht. De standaardwaarde is true.
keyEntropyMode Hiermee geeft u de manier op waarop sleutels voor het beveiligen van berichten worden berekend. Sleutels kunnen alleen worden gebaseerd op het clientsleutelmateriaal, alleen op het servicesleutelmateriaal of op een combinatie van beide. Geldige waarden zijn

- ClientEntropy: De sessiesleutel is gebaseerd op sleutelgegevens die door de client worden verstrekt.
- ServerEntropy: De sessiesleutel is gebaseerd op sleutelgegevens die door de server worden geleverd.
- CombinedEntropy: De sessiesleutel is gebaseerd op de sleutelgegevens die worden geleverd door de client en service.

De standaardwaarde is CombinedEntropy.

Dit kenmerk is van het type SecurityKeyEntropyMode.
messageProtectionOrder Hiermee stelt u de volgorde in waarin beveiligingsalgoritmen op berichtniveau worden toegepast op het bericht. Geldige waarden zijn onder andere:

- SignBeforeEncrypt: Teken eerst en versleutel vervolgens.
- SignBeforeEncryptAndEncryptSignature: Teken eerst, versleutel en versleutel vervolgens de handtekening.
- EncryptBeforeSign: Eerst versleutelen en vervolgens ondertekenen.

De standaardwaarde is afhankelijk van de versie van WS-Security die wordt gebruikt. De standaardwaarde is SignBeforeEncryptAndEncryptSignature wanneer u WS-Security 1.1 gebruikt. De standaardwaarde is SignBeforeEncrypt wanneer u WS-Security 1.0 gebruikt.

Dit kenmerk is van het type MessageProtectionOrder.
messageSecurityVersion Optioneel. Hiermee stelt u de versie van WS-Security in die wordt gebruikt. Geldige waarden zijn onder andere:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

De standaardwaarde is WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 en kan in de XML worden uitgedrukt als gewoon Default. Dit kenmerk is van het type MessageSecurityVersion.
requireDerivedKeys Een Booleaanse waarde die aangeeft of sleutels kunnen worden afgeleid van de oorspronkelijke bewijssleutels. De standaardwaarde is true.
requireSecurityContextCancellation Optioneel. Een Booleaanse waarde die aangeeft of de beveiligingscontext moet worden geannuleerd en beëindigd wanneer deze niet meer nodig is. De standaardwaarde is true.
requireSignatureConfirmation Optioneel. Een Booleaanse waarde die aangeeft of de bevestiging van de handtekening van WS-Security is ingeschakeld. Wanneer dit is ingesteld true, worden berichthandtekeningen bevestigd door de beantwoorder. Wanneer de aangepaste binding is geconfigureerd voor wederzijdse certificaten of is geconfigureerd voor het gebruik van uitgegeven tokens (WSS 1.1-bindingen) wordt dit kenmerk standaard ingesteld trueop . Anders is de standaardwaarde false.

Handtekeningbevestiging wordt gebruikt om te bevestigen dat de service reageert in volledige kennis van een aanvraag.
securityHeaderLayout Optioneel. Hiermee geeft u de volgorde van de elementen in de beveiligingskoptekst. Geldige waarden zijn

- Strict: Items worden toegevoegd aan de beveiligingsheader volgens het algemene principe 'declareren voor gebruik'.
- Lax: Items worden toegevoegd aan de beveiligingskoptekst in elke volgorde die bevestigt aan WSS: SOAP Message Security.
- LaxWithTimestampFirst: Items worden toegevoegd aan de beveiligingsheader in elke volgorde die bevestigt aan WSS: SOAP-berichtbeveiliging, behalve dat het eerste element in de beveiligingsheader een wsse:Timestamp-element moet zijn.
- LaxWithTimestampLast: Items worden toegevoegd aan de beveiligingsheader in elke volgorde die aan WSS bevestigt: SOAP Message-beveiliging, behalve dat het laatste element in de beveiligingsheader een wsse:Timestamp-element moet zijn.

De standaardwaarde is Strict.

Dit element is van het type SecurityHeaderLayout.

authenticationMode-kenmerk

Weergegeven als Beschrijving
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

defaultAlgorithm Attribute

Weergegeven als Beschrijving
Basic128 Gebruik Aes128-versleuteling, Sha1 voor berichtsamenvatking en Rsa-oaep-mgf1p voor sleutelterugloop.
Basic192 Gebruik Aes192-versleuteling, Sha1 voor berichtsamenvatking, Rsa-oaep-mgf1p voor sleutelterugloop.
Basic256 Gebruik Aes256-versleuteling, Sha1 voor berichtsamenvatking, Rsa-oaep-mgf1p voor sleutelterugloop.
Basic256Rsa15 Gebruik Aes256 voor berichtversleuteling, Sha1 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
Basic192Rsa15 Gebruik Aes192 voor berichtversleuteling, Sha1 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
TripleDes Gebruik TripleDes-versleuteling, Sha1 voor berichtsamenvatking, Rsa-oaep-mgf1p voor sleutelterugloop.
Basic128Rsa15 Gebruik Aes128 voor berichtversleuteling, Sha1 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
TripleDesRsa15 Gebruik TripleDes-versleuteling, Sha1 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
Basic128Sha256 Gebruik Aes128 voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa-oaep-mgf1p voor sleutelterugloop.
Basic192Sha256 Gebruik Aes192 voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa-oaep-mgf1p voor sleutelterugloop.
Basic256Sha256 Gebruik Aes256 voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa-oaep-mgf1p voor sleutelterugloop.
TripleDesSha256 Gebruik TripleDes voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa-oaep-mgf1p voor sleutelterugloop.
Basic128Sha256Rsa15 Gebruik Aes128 voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
Basic192Sha256Rsa15 Gebruik Aes192 voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
Basic256Sha256Rsa15 Gebruik Aes256 voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.
TripleDesSha256Rsa15 Gebruik TripleDes voor berichtversleuteling, Sha256 voor berichtsamenvatking en Rsa15 voor sleutelterugloop.

Onderliggende elementen

Element Beschrijving
<issuedTokenParameters> Hiermee geeft u een huidig uitgegeven token. Dit element is van het type IssuedTokenParametersElement.
<localClient Instellingen> Hiermee geeft u de beveiligingsinstellingen van een lokale client voor deze binding. Dit element is van het type LocalClientSecuritySettingsElement.
<localService Instellingen> Hiermee geeft u de beveiligingsinstellingen van een lokale service voor deze binding. Dit element is van het type LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Hiermee geeft u de standaardwaarden op die worden gebruikt voor het initiëren van een beveiligde gespreksservice.

Bovenliggende elementen

Element Beschrijving
<Bindend> Definieert alle bindingsmogelijkheden van de aangepaste binding.

Opmerkingen

Zie SecurityBindingElement-verificatiemodi en procedures voor meer informatie over het gebruik van dit element: Een aangepaste binding maken met behulp van securityBindingElement.

Opmerking

In het volgende voorbeeld ziet u hoe u beveiliging configureert met behulp van een aangepaste binding. Het laat zien hoe u een aangepaste binding gebruikt om beveiliging op berichtniveau mogelijk te maken in combinatie met een veilig transport. Dit is handig wanneer een veilig transport nodig is om de berichten tussen client en service te verzenden en tegelijkertijd moeten de berichten veilig zijn op het berichtniveau. Deze configuratie wordt niet ondersteund door door het systeem geleverde bindingen.

De serviceconfiguratie definieert een aangepaste binding die tcp-communicatie ondersteunt die is beveiligd met tls/SSL-protocol en Windows-berichtbeveiliging. De aangepaste binding maakt gebruik van een servicecertificaat om de service op transportniveau te verifiëren en om de berichten tijdens de overdracht tussen client en service te beveiligen. Dit wordt bereikt door het sslStreamSecurity-bindingselement>.< Het certificaat van de service wordt geconfigureerd met behulp van een servicegedrag.

Daarnaast maakt de aangepaste binding gebruik van berichtbeveiliging met het Windows-referentietype. Dit is het standaardreferentietype. Dit wordt bereikt door het beveiligingsbindingselement . Zowel client als service worden geverifieerd met behulp van beveiliging op berichtniveau als Kerberos-verificatiemechanisme beschikbaar is. Als het Kerberos-verificatiemechanisme niet beschikbaar is, wordt NTLM-verificatie gebruikt. NTLM verifieert de client bij de service, maar verifieert geen service voor de client. Het beveiligingsbindingselement is geconfigureerd voor het gebruik SecureConversation van authenticationType, wat resulteert in het maken van een beveiligingssessie op zowel de client als de service. Dit is vereist om het dubbelzijdige contract van de service te laten werken. Zie Aangepaste bindingsbeveiliging voor meer informatie over het uitvoeren van dit voorbeeld.

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

Zie ook