Instrukcje: Konfigurowanie potwierdzenia sygnatury

Potwierdzenie podpisu jest mechanizmem inicjatora wiadomości w celu upewnienia się, że odebrana odpowiedź została wygenerowana w odpowiedzi na oryginalną wiadomość nadawcy. Potwierdzenie podpisu jest definiowane w specyfikacji WS-Security 1.1. Jeśli punkt końcowy obsługuje program WS-Security 1.0, nie można użyć potwierdzenia podpisu.

Poniższe procedury określają sposób włączania potwierdzenia podpisu przy użyciu elementu AsymmetricSecurityBindingElement. Tę samą procedurę można użyć z elementem SymmetricSecurityBindingElement. Procedura opiera się na podstawowych krokach opisanych w temacie How to: Create a Custom Binding Using the SecurityBindingElement (Jak utworzyć powiązanie niestandardowe przy użyciu elementu SecurityBindingElement).

Aby włączyć potwierdzenie podpisu w kodzie

  1. Utworzenie wystąpienia BindingElementCollection klasy.

  2. Utworzenie wystąpienia SymmetricSecurityBindingElement klasy.

  3. Ustaw opcję RequireSignatureConfirmation na true.

  4. Dodaj element zabezpieczeń do kolekcji powiązań.

  5. Utwórz powiązanie niestandardowe, zgodnie z opisem w temacie Instrukcje: tworzenie powiązania niestandardowego przy użyciu elementu SecurityBindingElement.

Aby włączyć potwierdzenie podpisu w konfiguracji

  1. <customBinding> Dodaj element do <bindings> sekcji pliku konfiguracji.

  2. <binding> Dodaj element i ustaw atrybut name na odpowiednią wartość.

  3. Dodaj odpowiedni element kodowania. Poniższy przykład dodaje <TextMessageEncoding> element.

  4. Dodaj element podrzędny <security> i ustaw requireSignatureConfirmation atrybut na true.

  5. Opcjonalny. Aby włączyć potwierdzenie podpisu podczas uruchamiania, dodaj element podrzędny <secureConversationBootstrap> i ustaw requireSignatureConfirmation atrybut na true.

  6. Dodaj odpowiedni element transportu. W poniższym przykładzie dodano httpTransport><:

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

Przykład

Poniższy kod tworzy wystąpienie SymmetricSecurityBindingElement obiektu i ustawia RequireSignatureConfirmation właściwość na truewartość . Należy pamiętać, że w tym przykładzie nie użyto <secureConversationBootstrap> elementu pokazanego w poprzednim przykładzie. W tym przykładzie pokazano potwierdzenie podpisu podczas korzystania z tokenu protokołu Kerberos systemu Windows. W takim przypadku podpis klienta jest zwracany we wszystkich odpowiedziach z usługi i jest potwierdzany przez klienta.

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

Zobacz też