Freigeben über


Gewusst wie: Zugriff auf einen WSE3.0-Dienst über einen WCF-Client

Windows Communication Foundation (WCF)-Clients sind auf niedriger Ebene mit Diensten von Web Services Enhancements (WSE) 3.0 für Microsoft .NET-Dienste kompatibel, wenn WCF-Clients für die Verwendung der Version der WS-Adressierungsspezifikation vom August 2004 konfiguriert sind. Allerdings unterstützen WSE 3.0-Dienste das Protokoll für den Austausch von Metadaten (MEX) nicht. Wenn Sie also das Service Metadata Utility Tool (SvcUtil.exe) für die Erstellung einer WCF-Clientklasse verwenden, werden die Sicherheitseinstellungen nicht auf den erstellten WCF-Client angewandt. Daher müssen Sie die Sicherheitseinstellungen, die der WSE 3.0-Dienst erfordert, festlegen, nachdem der WCF-Client erzeugt wurde.

Sie können diese Sicherheitseinstellungen anwenden, indem Sie eine benutzerdefinierte Bindung verwenden, um die Anforderungen des WSE 3.0-Diensts und die Interoperabilitätsanforderungen zwischen einem WSE 3.0-Dienst und einem WCF-Client zu berücksichtigen. Diese Interoperabilitätsanforderungen umfassen die zuvor genannte Verwendung der WS-Adressierungsspezifikation vom August 2004 und den WSE 3.0-Standardnachrichtenschutz von SignBeforeEncrypt. Der Standardnachrichtenschutz für WCF ist SignBeforeEncryptAndEncryptSignature. Dieses Thema veranschaulicht die Erstellung einer WCF-Bindung, die mit einem WSE 3.0-Dienst zusammenarbeitet. WCF bietet ebenfalls ein Beispiel, das diese Bindung enthält. Weitere Informationen zu diesem Beispiel finden Sie unter Interoperating with WSE.

So greifen Sie mit einem WCF-Client auf einen WSE 3.0-Webdienst zu

  1. Führen Sie das Service Metadata Utility Tool (SvcUtil.exe) aus, um für den WSE 3.0-Webdienst einen WCF-Client zu erstellen.

    Für einen WSE 3.0-Webdienst wird ein WCF-Client erstellt. Da WSE 3.0 das MEX-Protokoll nicht unterstützt, können Sie das Tool nicht nutzen, um die Sicherheitsanforderungen für den Webdienst aufzurufen. Der Anwendungsentwickler muss die Sicherheitseinstellungen für den Client hinzufügen.

    Weitere Informationen zum Erstellen eines WCF-Client finden Sie unter Gewusst wie: Erstellen eines Windows Communication Foundation-Clients.

  2. Erstellen Sie eine Klasse, die eine Bindung darstellt, die mit WSE 3.0-Webdiensten kommunizieren kann.

    Die folgende Klasse ist Teil des Interoperating with WSE-Beispiels:

    1. Erstellen Sie eine von der Binding-Klasse abgeleitete Klasse.
      Der folgende Code erstellt eine Klasse mit dem Namen WseHttpBinding, die von der Binding-Klasse abgeleitet wird.
    2. Fügen Sie Eigenschaften zur Klasse hinzu, die die sofort verwendbare WSE-Assertion festlegen, die vom WSE-Dienst verwendet wird. Hierzu gehört, ob abgeleitete Schlüssel erforderlich sind, ob Sicherheitssitzungen zum Einsatz kommen, ob Signaturbestätigungen erforderlich sind sowie die Einstellungen für den Nachrichtenschutz. In WSE 3.0 legt eine sofort verwendbare Assertion die Sicherheitsanforderungen für einen Client oder einen Webdienst fest – ähnlich dem Authentifizierungsmodus einer Bindung in WCF.
      Das folgende Codebeispiel definiert die SecurityAssertion, RequireDerivedKeys EstablishSecurityContext und die MessageProtectionOrder-Eigenschaften, die die sofort verwendbare WSE-Assertion festlegen. Hierzu gehört, ob abgeleitete Schlüssel erforderlich sind, ob Sicherheitssitzungen zum Einsatz kommen, ob Signaturbestätigungen erforderlich sind sowie die Einstellungen für den Nachrichtenschutz.
    3. Überschreiben Sie die CreateBindingElements-Methode zum Einrichten der Bindungseigenschaften.
      Das folgende Codebeispiel legt die Einstellungen für Transport, Nachrichtencodierung und Nachrichtenschutz fest, indem die Werte für SecurityAssertion und die MessageProtectionOrder-Eigenschaften abgerufen werden.
  3. Fügen Sie im Clientanwendungscode Code hinzu, um die Bindungseigenschaften festzulegen.

    Das folgende Codebeispiel legt fest, dass der WCF-Client Nachrichtenschutz und -authentifizierung, wie von der sofort verwendbaren WSE 3.0-AnonymousForCertificate-Sicherheitsassertion definiert, verwenden muss. Darüber hinaus sind Sicherheitssitzungen und abgeleitete Schlüssel erforderlich.

Beispiel

Das folgende Codebeispiel definiert eine benutzerdefinierte Bindung, die Eigenschaften offenlegt, die mit den Eigenschaften der sofort verwendbaren WSE 3.0-Sicherheitsassertion übereinstimmen. Die benutzerdefinierte Bindung mit dem Namen WseHttpBinding wird dann für die Festlegung der Bindungseigenschaften für einen WCF-Client verwendet, der mit dem WSSecurityAnonymous WSE 3.0 QuickStart kommuniziert.

Siehe auch

Referenz

Binding

Weitere Ressourcen

Interoperating with WSE