Delen via


Procedure: Een handtekeningbevestiging instellen

Handtekeningbevestiging is een mechanisme voor een berichtinitiator om ervoor te zorgen dat er een ontvangen antwoord is gegenereerd als reactie op het oorspronkelijke bericht van de afzender. Handtekeningbevestiging wordt gedefinieerd in de WS-Security 1.1-specificatie. Als een eindpunt WS-Security 1.0 ondersteunt, kunt u geen handtekeningbevestiging gebruiken.

In de volgende procedures wordt aangegeven hoe u een handtekeningbevestiging kunt inschakelen met behulp van een AsymmetricSecurityBindingElement. U kunt dezelfde procedure gebruiken met een SymmetricSecurityBindingElement. De procedure bouwt voort op de basisstappen in Procedure: Een aangepaste binding maken met behulp van securityBindingElement.

Handtekeningbevestiging inschakelen in code

  1. Maak een exemplaar van de BindingElementCollection-klasse.

  2. Maak een exemplaar van de SymmetricSecurityBindingElement-klasse.

  3. Stel de RequireSignatureConfirmation in op true.

  4. Voeg het beveiligingselement toe aan de bindingverzameling.

  5. Maak een aangepaste binding, zoals opgegeven in Procedure: Een aangepaste binding maken met behulp van securityBindingElement.

Handtekeningbevestiging inschakelen in configuratie

  1. Voeg een <customBinding> element toe aan de <bindings> sectie van het configuratiebestand.

  2. Voeg een <binding> element toe en stel het naamkenmerk in op een geschikte waarde.

  3. Voeg een geschikt coderingselement toe. In het volgende voorbeeld wordt een <TextMessageEncoding> element toegevoegd.

  4. Voeg een <security> onderliggend element toe en stel het requireSignatureConfirmation kenmerk in op true.

  5. Optioneel. Als u handtekeningbevestiging wilt inschakelen tijdens de bootstrap, voegt u een onderliggend element secureConversationBootstrap> toe en stelt u het requireSignatureConfirmation kenmerk in op true.<

  6. Voeg een geschikt transportelement toe. In het volgende voorbeeld wordt een <httpTransport> toegevoegd:

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

Opmerking

Met de volgende code maakt u een exemplaar van de SymmetricSecurityBindingElement en stelt u de RequireSignatureConfirmation eigenschap in op true. Houd er rekening mee dat in dit voorbeeld niet het <secureConversationBootstrap> element wordt gebruikt dat in het voorgaande voorbeeld wordt weergegeven. In dit voorbeeld ziet u een bevestiging van handtekeningen wanneer u een Windows-token (Kerberos-protocol) gebruikt. In dit geval wordt de handtekening van de client geretourneerd in alle antwoorden van de service en wordt bevestigd door de klant.

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

Zie ook