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
Utworzenie wystąpienia BindingElementCollection klasy.
Utworzenie wystąpienia SymmetricSecurityBindingElement klasy.
Ustaw opcję RequireSignatureConfirmation na
true
.Dodaj element zabezpieczeń do kolekcji powiązań.
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
<customBinding>
Dodaj element do<bindings>
sekcji pliku konfiguracji.<binding>
Dodaj element i ustaw atrybut name na odpowiednią wartość.Dodaj odpowiedni element kodowania. Poniższy przykład dodaje
<TextMessageEncoding>
element.Dodaj element podrzędny
<security>
i ustawrequireSignatureConfirmation
atrybut natrue
.Opcjonalny. Aby włączyć potwierdzenie podpisu podczas uruchamiania, dodaj element podrzędny <secureConversationBootstrap> i ustaw
requireSignatureConfirmation
atrybut natrue
.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 true
wartość . 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