Nasıl yapılır: İmza Onayı Ayarlama

İmza onayı , gönderenin özgün iletisine yanıt olarak alınan bir yanıtın oluşturulduğundan emin olmak için ileti başlatıcısına yönelik bir mekanizmadır. İmza onayı WS-Security 1.1 belirtiminde tanımlanır. Bir uç nokta WS-Security 1.0'ı destekliyorsa imza onayı kullanamazsınız.

Aşağıdaki yordamlar, kullanarak AsymmetricSecurityBindingElementimza onayının nasıl etkinleştirileceğini belirtir. ile aynı yordamı SymmetricSecurityBindingElementkullanabilirsiniz. Yordam, How to: Create a Custom Binding Using the SecurityBindingElement (SecurityBindingElement Kullanarak Özel Bağlama Oluşturma) bölümünde bulunan temel adımları temel alır.

Kodda imza onaylarını etkinleştirmek için

  1. Öğesinin bir örneğini oluşturur BindingElementCollection sınıfı.

  2. Öğesinin bir örneğini oluşturur SymmetricSecurityBindingElement sınıfı.

  3. RequireSignatureConfirmation ayarını true yapın.

  4. Bağlama koleksiyonuna güvenlik öğesini ekleyin.

  5. Nasıl yapılır: SecurityBindingElement Kullanarak Özel Bağlama Oluşturma bölümünde belirtildiği gibi özel bir bağlama oluşturun.

Yapılandırmada imza onaylarını etkinleştirmek için

  1. Yapılandırma dosyasının <bindings> bölümüne bir <customBinding> öğe ekleyin.

  2. Bir <binding> öğe ekleyin ve name özniteliğini uygun bir değere ayarlayın.

  3. Uygun bir kodlama öğesi ekleyin. Aşağıdaki örnek bir <TextMessageEncoding> öğe ekler.

  4. Bir <security> alt öğe ekleyin ve özniteliğini requireSignatureConfirmation olarak trueayarlayın.

  5. isteğe bağlı. Bootstrap sırasında imza onayını etkinleştirmek için secureConversationBootstrap <>alt öğesi ekleyin ve özniteliğini requireSignatureConfirmation olarak trueayarlayın.

  6. Uygun bir aktarım öğesi ekleyin. Aşağıdaki örnek bir <httpTransport> ekler:

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

Örnek

Aşağıdaki kod öğesinin bir örneğini SymmetricSecurityBindingElement oluşturur ve özelliğini olarak trueayarlarRequireSignatureConfirmation. Bu örnekte önceki örnekte gösterilen öğesinin kullanılmadığını <secureConversationBootstrap> unutmayın. Bu örnekte, Windows (Kerberos protokolü) belirteci kullanılırken imza onayı gösterilmektedir. Bu durumda, istemcinin imzası hizmetten gelen tüm yanıtlarda döndürülür ve istemci tarafından onaylanır.

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

Ayrıca bkz.