Postupy: Nastavení potvrzení podpisu
Potvrzení podpisu je mechanismus pro iniciátor zprávy, který zajistí, že byla přijatá odpověď vygenerována v reakci na původní zprávu odesílatele. Potvrzení podpisu je definováno ve specifikaci WS-Security 1.1. Pokud koncový bod podporuje WS-Security 1.0, nemůžete použít potvrzení podpisu.
Následující postupy určují, jak povolit potvrzení podpisu pomocí znaku AsymmetricSecurityBindingElement. Můžete použít stejný postup s SymmetricSecurityBindingElement. Tento postup vychází ze základních kroků, které najdete v tématu Postupy: Vytvoření vlastní vazby pomocí securityBindingElement.
Povolení potvrzení podpisu v kódu
Vytvořit instanci BindingElementCollection třídy.
Vytvořit instanci SymmetricSecurityBindingElement třídy.
Nastavte RequireSignatureConfirmation na
true
.Přidejte prvek zabezpečení do kolekce vazeb.
Vytvořte vlastní vazbu, jak je uvedeno v postupu: Vytvoření vlastní vazby pomocí SecurityBindingElement.
Povolení potvrzení podpisu v konfiguraci
<customBinding>
Přidejte prvek do<bindings>
části konfiguračního souboru.<binding>
Přidejte prvek a nastavte atribut name na odpovídající hodnotu.Přidejte odpovídající kódovací prvek. Následující příklad přidá
<TextMessageEncoding>
prvek.<security>
Přidejte podřízený prvek a nastavterequireSignatureConfirmation
atribut natrue
.Nepovinné. Chcete-li povolit potvrzení podpisu během bootstrap, přidejte <secureConversationBootstrap> podřízený element a nastavte
requireSignatureConfirmation
atribut natrue
.Přidejte odpovídající transportní prvek. Následující příklad přidá httpTransport>:<
<bindings> <customBinding> <binding name="SignatureConfirmationBinding"> <security requireSignatureConfirmation="true"> <secureConversationBootstrap requireSignatureConfirmation="true" /> </security> <textMessageEncoding /> <httpTransport /> </binding> </customBinding> </bindings>
Příklad
Následující kód vytvoří instanci SymmetricSecurityBindingElement a nastaví RequireSignatureConfirmation vlastnost na true
. Všimněte si, že tento příklad nepoužívá <secureConversationBootstrap>
prvek zobrazený v předchozím příkladu. Tento příklad ukazuje potvrzení podpisu při použití tokenu protokolu Kerberos (Windows). V tomto případě se podpis klienta vrátí ve všech odpovědích ze služby a je potvrzen klientem.
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