Delen via


Procedure: WCF-services configureren voor samenwerking met WSE 3.0-clients

WcF-services (Windows Communication Foundation) zijn compatibel met wire-level met Web Services Enhancements 3.0 voor Microsoft .NET-clients (WSE) wanneer WCF-services zijn geconfigureerd voor gebruik van de versie van augustus 2004 van de WS-Adresseringsspecificatie.

Een WCF-service inschakelen voor samenwerking met WSE 3.0-clients

  1. Definieer een aangepaste binding voor de WCF-service.

    Als u wilt opgeven dat de versie van augustus 2004 van de WS-Adresseringsspecificatie wordt gebruikt voor berichtcodering, moet er een aangepaste binding worden gemaakt.

    1. Voeg een onderliggende <customBinding> toe aan de <bindingen> van het configuratiebestand van de service.

    2. Geef een naam op voor de binding door een <binding> toe te voegen aan customBinding>< en het name kenmerk in te stellen.

    3. Geef een verificatiemodus en de versie van de WS-Security-specificaties op die worden gebruikt voor het beveiligen van berichten die compatibel zijn met WSE 3.0 door een onderliggende <beveiliging> toe te voegen aan de <binding>.

      Als u de verificatiemodus wilt instellen, stelt u het authenticationMode kenmerk van de <beveiliging> in. Een verificatiemodus is ongeveer gelijk aan een kant-en-klare beveiligingsverklaring in WSE 3.0. In de volgende tabel worden verificatiemodi in WCF toegewezen aan kant-en-klare beveiligingsverklaringen in WSE 3.0.

      WCF-verificatiemodus WSE 3.0-kant-en-klare beveiligingsverklaring
      AnonymousForCertificate anonymousForCertificateSecurity
      Kerberos kerberosSecurity
      MutualCertificate mutualCertificate10Security*
      MutualCertificate mutualCertificate11Security*
      UserNameOverTransport usernameOverTransportSecurity
      UserNameForCertificate usernameForCertificateSecurity

      * Een van de belangrijkste verschillen tussen de mutualCertificate10Security en kant-en-klare mutualCertificate11Security beveiligingsverklaringen is de versie van de WS-Security-specificatie die door WSE wordt gebruikt om de SOAP-berichten te beveiligen. Voor mutualCertificate10Security, WS-Security 1.0 wordt gebruikt, terwijl WS-Security 1.1 wordt gebruikt voor mutualCertificate11Security. Voor WCF wordt de versie van de WS-Security-specificatie opgegeven in het messageSecurityVersion kenmerk van de <beveiliging>.

      Als u de versie van de WS-Security-specificatie wilt instellen die wordt gebruikt voor het beveiligen van SOAP-berichten, stelt u het messageSecurityVersion kenmerk van de <beveiliging> in. Als u wilt samenwerken met WSE 3.0, stelt u de waarde van het messageSecurityVersion kenmerk in op WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.

    4. Geef op dat de versie van augustus 2004 van de WS-Adresseringsspecificatie wordt gebruikt door WCF door een <textMessageEncoding toe te> voegen en de messageVersion waarde ervan in te Soap11WSAddressingAugust2004stellen op .

      Notitie

      Wanneer u SOAP 1.2 gebruikt, stelt u het messageVersion kenmerk in op Soap12WSAddressingAugust2004.

  2. Geef op dat de service gebruikmaakt van de aangepaste binding.

    1. Stel het binding kenmerk van het <eindpuntelement> in op customBinding.

    2. Stel het bindingConfiguration kenmerk van het <eindpuntelement> in op de waarde die is opgegeven in het name kenmerk van de< binding> voor de aangepaste binding.

Opmerking

In het volgende codevoorbeeld wordt aangegeven dat er Service.HelloWorldService een aangepaste binding wordt gebruikt om samen te werken met WSE 3.0-clients. De aangepaste binding geeft aan dat de versie van augustus 2004 van de WS-Addressing en de WS-Security 1.1-set specificaties worden gebruikt om de uitgewisselde berichten te coderen. De berichten worden beveiligd met behulp van de AnonymousForCertificate verificatiemodus.

<configuration>
  <system.serviceModel>
    <services>
      <service
        behaviorConfiguration="ServiceBehavior"
        name="Service.HelloWorldService">
        <endpoint binding="customBinding" address=""
          bindingConfiguration="ServiceBinding"
          contract="Service.IHelloWorld"></endpoint>
      </service>
    </services>

    <bindings>
      <customBinding>
        <binding name="ServiceBinding">
          <security authenticationMode="AnonymousForCertificate"
                  messageProtectionOrder="SignBeforeEncrypt"
                  messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
                  requireDerivedKeys="false">
          </security>
          <textMessageEncoding messageVersion ="Soap11WSAddressingAugust2004"></textMessageEncoding>
          <httpTransport/>
        </binding>
      </customBinding>
    </bindings>
    <behaviors>
      <behavior name="ServiceBehavior" returnUnknownExceptionsAsFaults="true">
        <serviceCredentials>
          <serviceCertificate findValue="CN=WCFQuickstartServer" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName"/>
        </serviceCredentials>
      </behavior>
    </behaviors>
  </system.serviceModel>
</configuration>

Zie ook