Практическое руководство. Настройка подтверждения сигнатуры
Подтверждение подписи — это механизм инициатора сообщения, чтобы убедиться, что полученный ответ был создан в ответ на исходное сообщение отправителя. Подтверждение подписи определено в спецификации WS-Security 1.1. Если конечная точка поддерживает WS-Security 1.0, использовать подтверждение подписи нельзя.
В процедурах ниже показано, как включить подтверждение подписи, используя элемент привязки AsymmetricSecurityBindingElement. Аналогичным образом можно использовать элемент привязки SymmetricSecurityBindingElement. Процедура основана на основных шагах, описанных в разделе "Практическое руководство. Создание пользовательской привязки с помощью SecurityBindingElement".
Включение подтверждения подписи в коде
Создайте экземпляр класса BindingElementCollection.
Создайте экземпляр класса SymmetricSecurityBindingElement.
Задайте для RequireSignatureConfirmation значение
true
.Добавьте элемент безопасности в коллекцию элементов привязки.
Создайте пользовательскую привязку, как указано в руководстве. Создание пользовательской привязки с помощью SecurityBindingElement.
Включение подтверждения подписи в конфигурации
Добавьте элемент
<customBinding>
в раздел<bindings>
файла конфигурации.Добавьте элемент
<binding>
и присвойте атрибуту имени соответствующее значение.Добавьте соответствующий элемент кодирования. В следующем примере добавляется элемент
<TextMessageEncoding>
.Добавьте дочерний элемент
<security>
и присвойте атрибутуrequireSignatureConfirmation
значениеtrue
.Необязательно. Чтобы включить подтверждение подписи во время начальной загрузки, добавьте дочерний <элемент secureConversationBootstrap> и задайте для атрибута
true
значениеrequireSignatureConfirmation
.Добавьте соответствующий элемент транспорта. В следующем примере добавляется <httpTransport>:
<bindings> <customBinding> <binding name="SignatureConfirmationBinding"> <security requireSignatureConfirmation="true"> <secureConversationBootstrap requireSignatureConfirmation="true" /> </security> <textMessageEncoding /> <httpTransport /> </binding> </customBinding> </bindings>
Пример
В приведенном ниже коде создается экземпляр класса SymmetricSecurityBindingElement и свойству RequireSignatureConfirmation присваивается значение true
. Обратите внимание, что в этом примере не используется элемент <secureConversationBootstrap>
, показанный в предыдущем примере. В этом примере демонстрируется подтверждение подписи при использовании маркера Windows (по протоколу Kerberos). В данном случае подпись клиента возвращается во всех ответах службы и подтверждается клиентом.
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
См. также
- SymmetricSecurityBindingElement
- AsymmetricSecurityBindingElement
- CreateMutualCertificateBindingElement
- Практическое руководство. Создание пользовательской привязки с использованием элемента SecurityBindingElement
- Практическое руководство. Создание SecurityBindingElement для заданного режима проверки подлинности