Partager via


Procédure : configurer une confirmation de signature

La confirmation de signature est un mécanisme permettant à un initiateur de message de s’assurer qu’une réponse reçue a été générée suite au message d’origine de l’expéditeur. La confirmation de signature est définie dans la spécification WS-Security 1.1. Si un point de terminaison prend en charge WS-Security 1.0, vous ne pouvez pas utiliser la confirmation de signature.

Les procédures suivantes spécifient comment activer la confirmation de signature à l'aide de AsymmetricSecurityBindingElement. Vous pouvez utiliser la même procédure avec SymmetricSecurityBindingElement. La procédure s’appuie sur les étapes de base décrites dans Guide pratique pour créer une liaison personnalisée à l’aide de SecurityBindingElement.

Pour activer la confirmation de signature dans le code

  1. Créez une instance de la classe BindingElementCollection.

  2. Créez une instance de la classe SymmetricSecurityBindingElement.

  3. Définissez RequireSignatureConfirmation sur true.

  4. Ajoutez l’élément de sécurité à la collection de liaisons.

  5. Créez une liaison personnalisée, comme spécifié dans Guide pratique pour créer une liaison personnalisée à l’aide de SecurityBindingElement.

Pour activer la confirmation de signature dans la configuration

  1. Ajoutez un élément <customBinding> à la section <bindings> du fichier de configuration.

  2. Ajoutez un élément <binding> et affectez une valeur appropriée à l'attribut de nom.

  3. Ajoutez un élément d'encodage approprié. L'exemple suivant ajoute un élément <TextMessageEncoding>.

  4. Ajoutez un élément enfant <security> et affectez requireSignatureConfirmation à l'attribut true.

  5. facultatif. Pour activer la confirmation de signature pendant le démarrage, ajoutez un élément enfant <secureConversationBootstrap> et affectez true à l’attribut requireSignatureConfirmation.

  6. Ajoutez un élément de transport approprié. L’exemple suivant ajoute un <httpTransport> :

    <bindings>
      <customBinding>
        <binding name="SignatureConfirmationBinding">
          <security requireSignatureConfirmation="true">
            <secureConversationBootstrap requireSignatureConfirmation="true" />
              </security>
           <textMessageEncoding />
             <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    

Exemple

Le code suivant crée une instance de SymmetricSecurityBindingElement et affecte RequireSignatureConfirmation à la propriété true. Notez que cet exemple n'utilise pas l'élément <secureConversationBootstrap> indiqué dans l'exemple précédent. Cet exemple présente la confirmation de signature lors de l'utilisation d'un jeton Windows (protocole Kerberos). Dans ce cas, la signature du client est retournée dans toutes les réponses du service et est confirmée par le client.

private Binding CreateBinding()
{
    BindingElementCollection bindings = new BindingElementCollection();
    KerberosSecurityTokenParameters tokens = new KerberosSecurityTokenParameters();
    SymmetricSecurityBindingElement security =
      new SymmetricSecurityBindingElement(tokens);

    // Require that every request and return be correlated.
    security.RequireSignatureConfirmation = true;

    bindings.Add(security);
    TextMessageEncodingBindingElement encoding = new TextMessageEncodingBindingElement();
    bindings.Add(encoding );
    HttpTransportBindingElement transport = new HttpTransportBindingElement();
    bindings.Add(transport);
    CustomBinding myBinding = new CustomBinding(bindings);
    return myBinding;
}
Private Function CreateBinding() As Binding
    Dim bindings As New BindingElementCollection()
    Dim tokens As New KerberosSecurityTokenParameters()

    Dim security As New SymmetricSecurityBindingElement(tokens)

    ' Require that every request and return be correlated.
    security.RequireSignatureConfirmation = True

    bindings.Add(security)
    Dim encoding As New TextMessageEncodingBindingElement()
    bindings.Add(encoding)
    Dim transport As New HttpTransportBindingElement()
    bindings.Add(transport)
    Dim myBinding As New CustomBinding(bindings)
    Return myBinding
End Function

Voir aussi