<security> de <customBinding>

Spécifie les options de sécurité d'une liaison personnalisée.

Hiérarchie de schéma

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

Syntaxe

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

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description

allowSerializedSigningTokenOnReply

Facultatif. Valeur booléenne qui spécifie si un jeton sérialisé peut être utilisé sur la réponse. La valeur par défaut est false. Si vous utilisez une liaison double, le paramètre a la valeur par défaut true et tout paramètre défini sera ignoré.

authenticationMode

Facultatif. Spécifie le mode d'authentification utilisé entre l'initiateur et le répondeur. Reportez-vous ci-dessous pour connaître toutes les valeurs.

La valeur par défaut est sspiNegotiated.

defaultAlgorithmSuite

Facultatif. Définit les algorithmes de chiffrement de message et de clé de type WRAP. Les algorithmes et les tailles de clé sont déterminés par la classe SecurityAlgorithmSuite. Ces algorithmes se mappent à ceux définis dans la spécification Security Policy Language (WS-SecurityPolicy).

Les valeurs possibles sont indiquées ci-dessous. La valeur par défaut est Basic256.

Cet attribut est employé lors de l'utilisation d'une plate-forme différente qui opte pour un jeu d'algorithmes différent de la valeur par défaut. Vous devez connaître les forces et les faiblesses des algorithmes concernés lorsque vous modifiez ce paramètre. Cet attribut est de type SecurityAlgorithmSuite.

includeTimestamp

Valeur booléenne qui spécifie si les horodatages sont inclus dans chaque message. La valeur par défaut est true.

keyEntropyMode

Spécifie la manière dont les clés de sécurisation des messages sont calculées. Les clés peuvent être basées uniquement sur la clé du client, sur la clé du service ou sur une combinaison des deux. Les valeurs valides sont :

  • ClientEntropy : la clé de la session est basée sur les données de la clé fournies par le client.

  • ServerEntropy : la clé de la session est basée sur les données de la clés fournies par le serveur.

  • CombinedEntropy : la clé de la session est basée sur les données de la clés fournies par le client et le service.

La valeur par défaut est CombinedEntropy.

Cet attribut est de type SecurityKeyEntropyMode.

messageProtectionOrder

Définit l'ordre dans lequel les algorithmes de sécurité au niveau du message sont appliqués au message. Les valeurs valides sont les suivantes :

  • SignBeforeEncrypt : signer en premier, chiffrer ensuite.

  • SignBeforeEncryptAndEncryptSignature : signer en premier, chiffrer, puis chiffrer la signature.

  • EncryptBeforeSign : chiffrer en premier, signer ensuite.

La valeur par défaut dépend de la version de WS-Security qui est utilisée. La valeur par défaut est SignBeforeEncryptAndEncryptSignature lors de l'utilisation de WS-Security 1.1. La valeur par défaut est SignBeforeEncrypt lors de l'utilisation de WS-Security 1.0.

Cet attribut est de type MessageProtectionOrder.

messageSecurityVersion

Facultatif. Définit la version de WS-Security utilisée. Les valeurs valides sont les suivantes :

  • WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11

  • WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

  • WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

La valeur par défaut est WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 et peut être simplement exprimée en XML par Default. Cet attribut est de type MessageSecurityVersion.

requireDerivedKeys

Valeur booléenne qui spécifie si les clés peuvent être dérivées des clés de vérification d'origine. La valeur par défaut est true.

requireSecurityContextCancellation

Facultatif. Valeur booléenne qui spécifie si le contexte de sécurité doit être annulé et arrêté lorsqu'il n'est plus exigé. La valeur par défaut est true.

requireSignatureConfirmation

Facultatif. Valeur booléenne qui spécifie si la confirmation de signature WS-Security est activée. En cas de définition à true, les signatures de message sont confirmées par le répondeur. Lorsque la liaison personnalisée est configurée pour des certificats mutuels ou si elle est configurée pour utiliser des jetons émis (liaisons WSS 1.1) cet attribut a la valeur par défaut true. Sinon, la valeur par défaut est false.

La confirmation de signature est utilisée pour confirmer que le service répond en toute confiance à une demande.

securityHeaderLayout

Facultatif. Spécifie le classement des éléments dans l'en-tête de sécurité. Les valeurs valides sont :

  • Strict : les éléments sont ajoutés à l'en-tête de sécurité conformément au principe général "déclarer avant d'utiliser".

  • Lax : les éléments sont ajoutés à l'en-tête de sécurité dans n'importe quel ordre conforme à WSS: SOAP Message Security.

  • LaxWithTimestampFirst : les éléments sont ajoutés à l'en-tête de sécurité dans n'importe quel ordre conforme à WSS: SOAP Message Security, mais le premier élément de l'en-tête de sécurité doit être un élément wsse:Timestamp.

  • LaxWithTimestampLast : les éléments sont ajoutés à l'en-tête de sécurité dans n'importe quel ordre conforme à WSS: SOAP Message Security, mais le dernier élément de l'en-tête de sécurité doit être un élément wsse:Timestamp.

La valeur par défaut est Strict.

Cet élément est de type SecurityHeaderLayout.

Éléments enfants

Élément Description

<issuedTokenParameters>

Spécifie un jeton émis en cours. Cet élément est de type IssuedTokenParametersElement.

<localClientSettings>, élément

Spécifie les paramètres de sécurité d'un client local pour cette liaison. Cet élément est de type LocalClientSecuritySettingsElement.

<localServiceSettings>, élément

Spécifie les paramètres de sécurité d'un service local pour cette liaison. Cet élément est de type LocalServiceSecuritySettingsElement.

<secureConversationBootstrap>

Spécifie les valeurs par défaut utilisées pour initialiser un service de conversation sécurisé.

Éléments parents

Élément Description

<binding>

Définit toutes les fonctions de liaison de la liaison personnalisée.

Notes

Pour plus d'informations sur le sujet suivant l'utilisation de cet élément, consultez SecurityBindingElement Authentication Modes et How To: Create a Custom Binding Using the SecurityBindingElement.

Exemple

L'exemple suivant montre comment configurer la sécurité à l'aide d'une liaison personnalisée. Il indique également comment utiliser une liaison personnalisée afin d'activer la sécurité de niveau message à l'aide d'un transport sécurisé. Cette configuration est utile lorsqu'un transport sécurisé est requis pour la transmission des messages entre le client et le service et que ces messages doivent en même temps bénéficier d'une sécurité de niveau message. Cette configuration n'est pas prise en charge par les liaisons fournies par le système.

La configuration du service définit une liaison personnalisée qui prend en charge la communication TCP protégée à l'aide du protocole TLS/SSL et de la sécurité des messages Windows. La liaison personnalisée utilise un certificat de service afin d'authentifier le service au niveau du transport et de protéger les messages pendant la transmission entre le client et le service. Cette tâche est effectuée par l'élément de liaison <sslStreamSecurity>. Le certificat du service est configuré à l'aide d'un comportement de service.

En outre, la liaison personnalisée utilise la sécurité du message avec le type d'informations d'identification Windows, le type d'informations d'identification par défaut. Cette tâche est effectuée par l'élément de liaison <security> de <customBinding>. Le client et le service sont tous deux authentifiés à l'aide de la sécurité au niveau du message si le mécanisme d'authentification Kerberos est disponible. Si le mécanisme d'authentification Kerberos n'est pas disponible, l'authentification NTLM est utilisée. NTLM authentifie le client au service mais n'authentifie pas le service au client. L'élément de liaison <security> de <customBinding> est configuré pour utiliser authenticationType SecureConversation, ce qui entraîne la création d'une session de sécurité à la fois au niveau du client et du service. Ceci est nécessaire pour permettre au contrat de duplex du service de s'exécuter. Pour plus d'informations sur l'exécution de cet exemple, consultez 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>

Voir aussi

Référence

<customBinding>
SecurityElement
SecurityBindingElement
CustomBinding

Autres ressources

Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings
How To: Create a Custom Binding Using the SecurityBindingElement
Custom Binding Security