Postupy: Nastavení potvrzení podpisu

Potvrzení podpisu je mechanismus pro iniciátor zprávy, který zajistí, že byla přijatá odpověď vygenerována v reakci na původní zprávu odesílatele. Potvrzení podpisu je definováno ve specifikaci WS-Security 1.1. Pokud koncový bod podporuje WS-Security 1.0, nemůžete použít potvrzení podpisu.

Následující postupy určují, jak povolit potvrzení podpisu pomocí znaku AsymmetricSecurityBindingElement. Můžete použít stejný postup s SymmetricSecurityBindingElement. Tento postup vychází ze základních kroků, které najdete v tématu Postupy: Vytvoření vlastní vazby pomocí securityBindingElement.

Povolení potvrzení podpisu v kódu

  1. Vytvořit instanci BindingElementCollection třídy.

  2. Vytvořit instanci SymmetricSecurityBindingElement třídy.

  3. Nastavte RequireSignatureConfirmation na true.

  4. Přidejte prvek zabezpečení do kolekce vazeb.

  5. Vytvořte vlastní vazbu, jak je uvedeno v postupu: Vytvoření vlastní vazby pomocí SecurityBindingElement.

Povolení potvrzení podpisu v konfiguraci

  1. <customBinding> Přidejte prvek do <bindings> části konfiguračního souboru.

  2. <binding> Přidejte prvek a nastavte atribut name na odpovídající hodnotu.

  3. Přidejte odpovídající kódovací prvek. Následující příklad přidá <TextMessageEncoding> prvek.

  4. <security> Přidejte podřízený prvek a nastavte requireSignatureConfirmation atribut na true.

  5. Nepovinné. Chcete-li povolit potvrzení podpisu během bootstrap, přidejte <secureConversationBootstrap> podřízený element a nastavte requireSignatureConfirmation atribut na true.

  6. Přidejte odpovídající transportní prvek. Následující příklad přidá httpTransport>:<

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

Příklad

Následující kód vytvoří instanci SymmetricSecurityBindingElement a nastaví RequireSignatureConfirmation vlastnost na true. Všimněte si, že tento příklad nepoužívá <secureConversationBootstrap> prvek zobrazený v předchozím příkladu. Tento příklad ukazuje potvrzení podpisu při použití tokenu protokolu Kerberos (Windows). V tomto případě se podpis klienta vrátí ve všech odpovědích ze služby a je potvrzen klientem.

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

Viz také