Anvisningar: Konfigurera en signaturbekräftelse
Signaturbekräftelse är en mekanism för en meddelandeinitierare för att säkerställa att ett mottaget svar genererades som svar på avsändarens ursprungliga meddelande. Signaturbekräftelse definieras i WS-Security 1.1-specifikationen. Om en slutpunkt stöder WS-Security 1.0 kan du inte använda signaturbekräftelse.
Följande procedurer anger hur du aktiverar signaturbekräftelse med hjälp av en AsymmetricSecurityBindingElement. Du kan använda samma procedur med en SymmetricSecurityBindingElement. Proceduren bygger på de grundläggande stegen i Så här skapar du en anpassad bindning med SecurityBindingElement.
Aktivera signaturbekräftelse i kod
Skapa en instans av BindingElementCollection klassen.
Skapa en instans av SymmetricSecurityBindingElement klassen.
Ange RequireSignatureConfirmation till
true
.Lägg till säkerhetselementet i bindningssamlingen.
Skapa en anpassad bindning enligt beskrivningen i Så här skapar du en anpassad bindning med hjälp av SecurityBindingElement.
Aktivera signaturbekräftelse i konfigurationen
Lägg till ett
<customBinding>
element i<bindings>
avsnittet i konfigurationsfilen.Lägg till ett
<binding>
element och ange ett lämpligt värde för namnattributet.Lägg till ett lämpligt kodningselement. I följande exempel läggs ett
<TextMessageEncoding>
element till.Lägg till ett
<security>
underordnatrequireSignatureConfirmation
element och ange attributet tilltrue
.Valfritt. Om du vill aktivera signaturbekräftelse under bootstrap lägger du till ett <secureConversationBootstrap-underordnat>
requireSignatureConfirmation
element och anger attributet tilltrue
.Lägg till ett lämpligt transportelement. I följande exempel läggs en <httpTransport> till:
<bindings> <customBinding> <binding name="SignatureConfirmationBinding"> <security requireSignatureConfirmation="true"> <secureConversationBootstrap requireSignatureConfirmation="true" /> </security> <textMessageEncoding /> <httpTransport /> </binding> </customBinding> </bindings>
Exempel
Följande kod skapar en instans av SymmetricSecurityBindingElement och anger RequireSignatureConfirmation egenskapen till true
. Observera att det här exemplet inte använder elementet <secureConversationBootstrap>
som visas i föregående exempel. Det här exemplet visar signaturbekräftelse när du använder en Windows-token (Kerberos-protokoll). I det här fallet returneras klientens signatur i alla svar från tjänsten och bekräftas av klienten.
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