Condividi tramite


Procedura: impostare una conferma della firma

La conferma della firma è un meccanismo che permette all'iniziatore del messaggio di assicurare che la risposta ricevuta sia stata generata in risposta al messaggio originale del mittente. La conferma della firma è definita nella specifica WS-Security 1.1. Se un endpoint supporta WS-Security 1.0, non è possibile utilizzare la conferma della firma.

Nelle procedure seguenti viene illustrato come consentire la conferma della firma utilizzando un AsymmetricSecurityBindingElement. È possibile utilizzare la stessa procedura con un SymmetricSecurityBindingElement. La procedura è basata sui passaggi di base illustrati in Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement.

Per consentire la conferma della firma nel codice

  1. Creare un'istanza della classe BindingElementCollection.

  2. Creare un'istanza della classe SymmetricSecurityBindingElement.

  3. Impostare RequireSignatureConfirmation su true.

  4. Aggiungere l'elemento di sicurezza alla raccolta di associazioni.

  5. Creare un'associazione personalizzata, come specificato in Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement.

Per consentire la conferma della firma nella configurazione

  1. Aggiungere un elemento <customBinding><bindings> alla sezione del file di configurazione.

  2. Aggiungere un elemento <binding> e impostare l'attributo del nome su un valore appropriato.

  3. Aggiungere un elemento di codifica appropriato. Nell'esempio seguente viene aggiunto un elemento <TextMessageEncoding>.

  4. Aggiungere un elemento figlio <security>requireSignatureConfirmation e impostare l'attributo true su .

  5. Facoltativo. Per consentire la conferma della firma durante il bootstrap, aggiungere un elemento figlio secureConversationBootstrap element e impostare l'attributo equireSignatureConfirmation su true.

  6. Aggiungere un elemento di trasporto appropriato. Nell'esempio seguente viene aggiunto un httpTransport element:

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

Esempio

Nel codice seguente viene creata un'istanza di SymmetricSecurityBindingElement e viene impostata la proprietà RequireSignatureConfirmation su true. Si noti che in questo esempio non viene utilizzato l'elemento <secureConversationBootstrap> illustrato nell'esempio precedente. In questo esempio viene illustrata la conferma della firma quando si utilizza un token di Windows (protocollo Kerberos). In questo caso, la firma del client viene restituita in tutte le risposte dal servizio e viene confermata dal client.

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

Vedere anche

Attività

Procedura: creare un elemento SecurityBindingElement per una modalità di autenticazione specificata

Riferimento

SymmetricSecurityBindingElement
AsymmetricSecurityBindingElement
CreateMutualCertificateBindingElement

Concetti

Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement