作法:設定簽章確認
「簽章確認」是訊息啟動器的機制,可確認所收到回覆已產生用來回應寄件者的原始訊息。 簽章確認是定義在 WS-Security 1.1 規格中。 如果端點支援 WS-Security 1.0,您就無法使用簽章確認。
下列程序會指定如何使用 AsymmetricSecurityBindingElement 啟用簽章確認。 您可以搭配 SymmetricSecurityBindingElement 使用相同的程序。 這個程序是以操作說明:使用 SecurityBindingElement 建立自訂繫結中的基本步驟為建置基礎。
若要在程式碼中啟用簽章確認
建立 BindingElementCollection 類別的執行個體。
建立 SymmetricSecurityBindingElement 類別的執行個體。
將 RequireSignatureConfirmation 設定為
true
。將安全性項目新增至繫結集合中。
依操作說明:使用 SecurityBindingElement 建立自訂繫結中所指定的方式建立自訂繫結。
若要在組態中啟用簽章確認
將
<customBinding>
項目新增至組態檔的<bindings>
區段中。新增
<binding>
項目,並將名稱屬性設為適當值。新增適當的編碼項目。 下列範例會新增
<TextMessageEncoding>
項目。新增
<security>
子項目並將requireSignatureConfirmation
屬性設定為true
。選擇性。 若要在啟動程序期間啟用簽章確認,請新增 <secureConversationBootstrap> 子項目,並將
requireSignatureConfirmation
屬性設定為true
。新增適當的傳輸項目。 下列程式碼範例會新增 <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