Partager via


<sécurité> de <customBinding>

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

<Configuration>
   <system.serviceModel>
     <Liaisons>
       <customBinding>
         <reliure>
           <sécurité>

Syntaxe

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

Attributs et éléments

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

Attributes

Caractéristique Descriptif
allowSerializedSigningTokenOnReply Optional. Valeur booléenne qui spécifie si un jeton sérialisé peut être utilisé lors de la réponse. La valeur par défaut est false. Lors de l’utilisation d’une liaison double, le paramètre est défini par défaut true et tous les paramètres effectués sont ignorés.
authenticationMode Optional. Spécifie le mode d’authentification utilisé entre l’initiateur et le répondeur. Voir ci-dessous pour toutes les valeurs.

La valeur par défaut est sspiNegotiated.
defaultAlgorithmSuite Optional. Définit le chiffrement des messages et les algorithmes d’habillage de clé. Les algorithmes et les tailles de clé sont déterminés par la SecurityAlgorithmSuite classe. Ces algorithmes correspondent à ceux spécifiés dans la spécification du langage de stratégie de sécurité (WS-SecurityPolicy).

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

Cet attribut est utilisé lors de l’utilisation d’une plateforme différente qui opte pour un ensemble d’algorithmes différent de la valeur par défaut. Vous devez connaître les points forts et les faiblesses des algorithmes pertinents lors de modifications apportées à 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 façon dont les clés de sécurisation des messages sont calculées. Les clés peuvent être basées uniquement sur le matériel de clé cliente, sur le matériel de clé de service uniquement ou sur une combinaison des deux. Les valeurs valides sont

- ClientEntropy: la clé de session est basée sur les données de clé fournies par le client.
- ServerEntropy: la clé de session est basée sur les données de clé fournies par le serveur.
- CombinedEntropy: la clé de session est basée sur les données de clé 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: signez d’abord, puis chiffrez.
- SignBeforeEncryptAndEncryptSignature: signez d’abord, chiffrez, puis chiffrez la signature.
- EncryptBeforeSign: Chiffrez d’abord, puis signez.

La valeur par défaut dépend de la version de WS-Security 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 Optional. 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 exprimée dans le code XML comme simplement 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 preuve d’origine. La valeur par défaut est true.
requireSecurityContextCancellation Optional. Valeur booléenne qui spécifie si le contexte de sécurité doit être annulé et arrêté lorsqu’il n’est plus nécessaire. La valeur par défaut est true.
requireSignatureConfirmation Optional. Valeur booléenne qui spécifie si WS-Security confirmation de signature est activée. Lorsque la valeur est définie true, les signatures de message sont confirmées par le répondeur. Lorsque la liaison personnalisée est configurée pour les certificats mutuels ou qu’elle est configurée pour utiliser des jetons émis (liaisons WSS 1.1), cet attribut est défini par défaut truesur . Sinon, la valeur par défaut est false.

La confirmation de signature est utilisée pour confirmer que le service répond en pleine connaissance d’une demande.
securityHeaderLayout Optional. Spécifie l’ordre 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é en fonction du principe général de « déclarer avant l’utilisation ».
- Lax: les éléments sont ajoutés à l’en-tête de sécurité dans n’importe quel ordre qui confirme à WSS : sécurité des messages SOAP.
- LaxWithTimestampFirst: les éléments sont ajoutés à l’en-tête de sécurité dans n’importe quel ordre qui confirme à WSS : sécurité des messages SOAP, sauf que 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 tout ordre qui confirme à WSS : sécurité des messages SOAP, sauf que 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.

authenticationMode Attribute

Valeur Descriptif
Chaîne AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

defaultAlgorithm, attribut

Valeur Descriptif
Basic128 Utilisez le chiffrement Aes128, Sha1 pour la synthèse des messages et Rsa-oaep-mgf1p pour l’habillage de clé.
Basic192 Utilisez le chiffrement Aes192, Sha1 pour la synthèse des messages, Rsa-oaep-mgf1p pour l’habillage de clé.
Basic256 Utilisez le chiffrement Aes256, Sha1 pour la synthèse des messages, Rsa-oaep-mgf1p pour l’habillage de clé.
Basic256Rsa15 Utilisez Aes256 pour le chiffrement des messages, Sha1 pour la synthèse des messages et Rsa15 pour l’habillage de clé.
Basic192Rsa15 Utilisez Aes192 pour le chiffrement des messages, Sha1 pour la synthèse des messages et Rsa15 pour l’habillage de clé.
Tripledes Utilisez le chiffrement TripleDes, Sha1 pour la synthèse des messages, Rsa-oaep-mgf1p pour l’encapsulage de clé.
Basic128Rsa15 Utilisez Aes128 pour le chiffrement des messages, Sha1 pour la synthèse des messages et Rsa15 pour l’habillage de clé.
TripleDesRsa15 Utilisez le chiffrement TripleDes, Sha1 pour la synthèse des messages et Rsa15 pour l’encapsulage de clé.
Basic128Sha256 Utilisez Aes128 pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa-oaep-mgf1p pour l’habillage de clé.
Basic192Sha256 Utilisez Aes192 pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa-oaep-mgf1p pour l’habillage de clé.
Basic256Sha256 Utilisez Aes256 pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa-oaep-mgf1p pour l’habillage de clé.
TripleDesSha256 Utilisez TripleDes pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa-oaep-mgf1p pour l’habillage de clé.
Basic128Sha256Rsa15 Utilisez Aes128 pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa15 pour l’habillage de clé.
Basic192Sha256Rsa15 Utilisez Aes192 pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa15 pour l’habillage de clé.
Basic256Sha256Rsa15 Utilisez Aes256 pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa15 pour l’habillage de clé.
TripleDesSha256Rsa15 Utilisez TripleDes pour le chiffrement des messages, Sha256 pour la synthèse des messages et Rsa15 pour l’habillage de clé.

Éléments enfants

Élément Descriptif
<issuedTokenParameters> Spécifie un jeton émis actuel. Cet élément est de type IssuedTokenParametersElement.
<localClientSettings> Spécifie les paramètres de sécurité d’un client local pour cette liaison. Cet élément est de type LocalClientSecuritySettingsElement.
<localServiceSettings> 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 lancer un service de conversation sécurisé.

Éléments parents

Élément Descriptif
<reliure> Définit toutes les fonctionnalités de liaison de la liaison personnalisée.

Remarques

Pour plus d’informations sur l’utilisation de cet élément, consultez Modes d’authentification SecurityBindingElement et Guide pratique pour créer une liaison personnalisée à l’aide de SecurityBindingElement.

Example

L’exemple suivant montre comment configurer la sécurité à l’aide d’une liaison personnalisée. Il montre comment utiliser une liaison personnalisée pour activer la sécurité au niveau des messages avec un transport sécurisé. Cela est utile lorsqu’un transport sécurisé est nécessaire pour transmettre les messages entre le client et le service, et que les messages doivent être sécurisés simultanément au niveau du 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 pour authentifier le service au niveau du transport et protéger les messages pendant la transmission entre le client et le service. Cette opération 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é des messages avec le type d’informations d’identification Windows : il s’agit du type d’informations d’identification par défaut. Cette opération est effectuée par l’élément de liaison de sécurité . Le client et le service sont 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 auprès du service, mais ne l’authentifie pas auprès du client. L’élément de liaison de sécurité est configuré pour utiliser SecureConversation authenticationType, ce qui entraîne la création d’une session de sécurité sur le client et le service. Cela est nécessaire pour permettre au contrat duplex du service de fonctionner. 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