Dela via


Anvisningar: Konfigurera en signaturbekräftelse

Signaturbekräftelse är en mekanism för en meddelandeinitierare för att säkerställa att ett mottaget svar genererades som svar på avsändarens ursprungliga meddelande. Signaturbekräftelse definieras i WS-Security 1.1-specifikationen. Om en slutpunkt stöder WS-Security 1.0 kan du inte använda signaturbekräftelse.

Följande procedurer anger hur du aktiverar signaturbekräftelse med hjälp av en AsymmetricSecurityBindingElement. Du kan använda samma procedur med en SymmetricSecurityBindingElement. Proceduren bygger på de grundläggande stegen i Så här skapar du en anpassad bindning med SecurityBindingElement.

Aktivera signaturbekräftelse i kod

  1. Skapa en instans av BindingElementCollection klassen.

  2. Skapa en instans av SymmetricSecurityBindingElement klassen.

  3. Ange RequireSignatureConfirmation till true.

  4. Lägg till säkerhetselementet i bindningssamlingen.

  5. Skapa en anpassad bindning enligt beskrivningen i Så här skapar du en anpassad bindning med hjälp av SecurityBindingElement.

Aktivera signaturbekräftelse i konfigurationen

  1. Lägg till ett <customBinding> element i <bindings> avsnittet i konfigurationsfilen.

  2. Lägg till ett <binding> element och ange ett lämpligt värde för namnattributet.

  3. Lägg till ett lämpligt kodningselement. I följande exempel läggs ett <TextMessageEncoding> element till.

  4. Lägg till ett <security> underordnat requireSignatureConfirmation element och ange attributet till true.

  5. Valfritt. Om du vill aktivera signaturbekräftelse under bootstrap lägger du till ett <secureConversationBootstrap-underordnat>requireSignatureConfirmation element och anger attributet till true.

  6. Lägg till ett lämpligt transportelement. I följande exempel läggs en <httpTransport> till:

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

Exempel

Följande kod skapar en instans av SymmetricSecurityBindingElement och anger RequireSignatureConfirmation egenskapen till true. Observera att det här exemplet inte använder elementet <secureConversationBootstrap> som visas i föregående exempel. Det här exemplet visar signaturbekräftelse när du använder en Windows-token (Kerberos-protokoll). I det här fallet returneras klientens signatur i alla svar från tjänsten och bekräftas av klienten.

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

Se även