Dela via


Anvisningar: Konfigurera WCF-tjänster så att de samverkar med WSE 3.0-klienter

WCF-tjänster (Windows Communication Foundation) är kompatibla med Web Services Enhancements 3.0 för Microsoft .NET-klienter (WSE) när WCF-tjänster har konfigurerats för att använda versionen från augusti 2004 av WS-adresseringsspecifikationen.

Så här aktiverar du en WCF-tjänst för att samverka med WSE 3.0-klienter

  1. Definiera en anpassad bindning för WCF-tjänsten.

    Om du vill ange att augusti 2004-versionen av WS-Addressing-specifikationen används för meddelandekodning måste en anpassad bindning skapas.

    1. Lägg till en underordnad customBinding> till bindningarna> i tjänstens konfigurationsfil.<<

    2. Ange ett namn för bindningen genom att lägga till en <bindning> i< customBinding> och ange name attributet.

    3. Ange ett autentiseringsläge och den version av WS-Security-specifikationerna som används för att skydda meddelanden som är kompatibla med WSE 3.0 genom att lägga till en underordnad <säkerhet> i bindningen<>.

      Om du vill ange autentiseringsläget anger du authenticationMode säkerhetsattributet<>. Ett autentiseringsläge motsvarar ungefär en nyckelfärdig säkerhetskontroll i WSE 3.0. I följande tabell mappas autentiseringslägen i WCF till nyckelfärdiga säkerhetskontroller i WSE 3.0.

      WCF-autentiseringsläge WSE 3.0 nyckelfärdig säkerhetskontroll
      AnonymousForCertificate anonymousForCertificateSecurity
      Kerberos kerberosSecurity
      MutualCertificate mutualCertificate10Security*
      MutualCertificate mutualCertificate11Security*
      UserNameOverTransport usernameOverTransportSecurity
      UserNameForCertificate usernameForCertificateSecurity

      * En av de främsta skillnaderna mellan säkerhetskontrollerna mutualCertificate10Security och mutualCertificate11Security nyckelfärdiga är versionen av WS-Security-specifikationen som WSE använder för att skydda SOAP-meddelandena. För mutualCertificate10Securityanvänds WS-Security 1.0, medan WS-Security 1.1 används för mutualCertificate11Security. För WCF anges versionen av WS-Security-specifikationen i säkerhetsattributetmessageSecurityVersion<>.

      Ange säkerhetsattributet messageSecurityVersion><för att ange den version av WS-Security-specifikationen som används för att skydda SOAP-meddelanden. Om du vill samverka med WSE 3.0 anger du värdet för messageSecurityVersion attributet till WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.

    4. Ange att augusti 2004-versionen av WS-Addressing-specifikationen används av WCF genom att lägga till en textMessageEncoding> och ange messageVersion värdet till Soap11WSAddressingAugust2004.<

      Kommentar

      När du använder SOAP 1.2 anger du messageVersion attributet till Soap12WSAddressingAugust2004.

  2. Ange att tjänsten använder den anpassade bindningen.

    1. binding Ange attributet för slutpunktselementet><till .customBinding

    2. bindingConfiguration Ange attributet< för slutpunktselementet> till det värde som anges i name attributet för bindningen>< för den anpassade bindningen.

Exempel

I följande kodexempel anges att Service.HelloWorldService använder en anpassad bindning för att samverka med WSE 3.0-klienter. Den anpassade bindningen anger att augusti 2004-versionen av WS-Addressing och WS-Security 1.1-uppsättningen specifikationer används för att koda de utväxlade meddelandena. Meddelandena skyddas med autentiseringsläget AnonymousForCertificate .

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

Se även