Freigeben über


Vorgehensweise: Einrichten einer Signaturbestätigung

Signaturbestätigung ist ein Mechanismus für einen Nachrichteninitiator, um sicherzustellen, dass eine empfangene Antwort als Antwort auf die ursprüngliche Nachricht des Absenders generiert wurde. Die Signaturbestätigung wird in der WS-Sicherheit 1.1-Spezifikation definiert. Wenn ein Endpunkt WS-Sicherheit 1.0 unterstützt, können Sie keine Signaturbestätigung verwenden.

In den folgenden Verfahren wird beschrieben, wie die Signaturbestätigung mit AsymmetricSecurityBindingElement aktiviert wird. Sie können das gleiche Verfahren mit SymmetricSecurityBindingElement verwenden. Das Verfahren baut auf den grundlegenden Schritten auf, die in Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement beschrieben werden.

So aktivieren Sie die Signaturbestätigung in Code

  1. Erstellen Sie eine Instanz der BindingElementCollection-Klasse.

  2. Erstellen Sie eine Instanz der SymmetricSecurityBindingElement-Klasse.

  3. Legen Sie RequireSignatureConfirmation auf true fest

  4. Fügen Sie der Bindungsauflistung das Sicherheitselement hinzu.

  5. Erstellen Sie eine benutzerdefinierte Bindung, wie in Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement angegeben.

So aktivieren Sie die Signaturbestätigung in der Konfiguration

  1. Fügen Sie dem <customBinding><bindings>-Abschnitt der Konfigurationsdatei ein -Element hinzu.

  2. Fügen Sie ein <binding>-Element hinzu, und legen Sie das Namensattribut auf einen passenden Wert fest.

  3. Fügen Sie ein entsprechendes Codierungselement hinzu. Im folgenden Beispiel wird ein <TextMessageEncoding>-Element hinzugefügt.

  4. Fügen Sie ein untergeordnetes <security>requireSignatureConfirmation-Element hinzu, und legen Sie das true-Attribut auf fest.

  5. Optional. Wenn Sie die Signaturbestätigung während des Bootstraps aktivieren möchten, fügen Sie ein untergeordnetes secureConversationBootstrap element-Element hinzu, und legen Sie das equireSignatureConfirmation-Attribut auf true fest.

  6. Fügen Sie ein entsprechendes Transportelement hinzu. Im folgenden Beispiel wird ein httpTransport element hinzugefügt:

    <bindings>
      <customBinding>
        <binding name="SignatureConfirmationBinding">
          <security requireSignatureConfirmation="true">
            <secureConversationBootstrap requireSignatureConfirmation="true" />
              </security>
           <textMessageEncoding />
             <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    

Beispiel

Der folgende Code erstellt eine Instanz von SymmetricSecurityBindingElement und legt die RequireSignatureConfirmation-Eigenschaft auf true fest. Beachten Sie, dass in diesem Beispiel das im vorangehenden Beispiel gezeigte <secureConversationBootstrap>-Element nicht verwendet wird. In diesem Beispiel wird die Signaturbestätigung veranschaulicht, wenn ein Windows-(Kerberos-Protokoll)-Token verwendet wird. In diesem Fall wird die Signatur des Clients in allen Antworten vom Dienst zurückgegeben und vom Client bestätigt.

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     
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;
}

Siehe auch

Aufgaben

Vorgehensweise: Erstellen eines SecurityBindingElement für einen angegebenen Authentifizierungsmodus

Verweis

SymmetricSecurityBindingElement
AsymmetricSecurityBindingElement
CreateMutualCertificateBindingElement

Konzepte

Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement