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
Öğesinin bir örneğini oluşturur BindingElementCollection sınıfı.
Öğesinin bir örneğini oluşturur SymmetricSecurityBindingElement sınıfı.
RequireSignatureConfirmation ayarını
true
yapın.Bağlama koleksiyonuna güvenlik öğesini ekleyin.
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
Yapılandırma dosyasının
<bindings>
bölümüne bir<customBinding>
öğe ekleyin.Bir
<binding>
öğe ekleyin ve name özniteliğini uygun bir değere ayarlayın.Uygun bir kodlama öğesi ekleyin. Aşağıdaki örnek bir
<TextMessageEncoding>
öğe ekler.Bir
<security>
alt öğe ekleyin ve özniteliğinirequireSignatureConfirmation
olaraktrue
ayarlayın.isteğe bağlı. Bootstrap sırasında imza onayını etkinleştirmek için secureConversationBootstrap <>alt öğesi ekleyin ve özniteliğini
requireSignatureConfirmation
olaraktrue
ayarlayın.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 true
ayarlarRequireSignatureConfirmation. 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