Udostępnij za pośrednictwem


Instrukcje: Konfigurowanie usług WCF pod kątem współdziałania z klientami programu WSE 3.0

Usługi Windows Communication Foundation (WCF) są na poziomie przewodu zgodne z rozszerzeniami usług sieci Web w wersji 3.0 dla klientów platformy Microsoft .NET (WSE), gdy usługi WCF są skonfigurowane do używania specyfikacji adresowania WS z sierpnia 2004 r.

Aby umożliwić usłudze WCF współdziałanie z klientami programu WSE 3.0

  1. Zdefiniuj powiązanie niestandardowe dla usługi WCF.

    Aby określić, że specyfikacja adresowania WS z sierpnia 2004 r. jest używana do kodowania komunikatów, należy utworzyć powiązanie niestandardowe.

    1. Dodaj podrzędne <powiązanie niestandardowe> do <powiązań> pliku konfiguracji usługi.

    2. Określ nazwę powiązania, dodając powiązanie do parametru<>name customBinding i ustawiając> atrybut.<

    3. Określ tryb uwierzytelniania i wersję specyfikacji WS-Security, które są używane do zabezpieczania komunikatów zgodnych z programem WSE 3.0, dodając zabezpieczenia podrzędne <do <powiązania>.>

      Aby ustawić tryb uwierzytelniania, ustaw authenticationMode atrybut zabezpieczeń<>. Tryb uwierzytelniania jest w przybliżeniu odpowiednikiem asercji zabezpieczeń w programie WSE 3.0. Poniższa tabela mapuje tryby uwierzytelniania w programie WCF na gotowe asercji zabezpieczeń w programie WSE 3.0.

      Tryb uwierzytelniania WCF Asercja zabezpieczeń programu WSE 3.0
      AnonymousForCertificate anonymousForCertificateSecurity
      Kerberos kerberosSecurity
      MutualCertificate mutualCertificate10Security*
      MutualCertificate mutualCertificate11Security*
      UserNameOverTransport usernameOverTransportSecurity
      UserNameForCertificate usernameForCertificateSecurity

      * Jedną z podstawowych różnic między mutualCertificate10Security asercjami zabezpieczeń i mutualCertificate11Security pod kluczem jest wersja specyfikacji WS-Security, która jest używana przez usługę WSE do zabezpieczania komunikatów PROTOKOŁU SOAP. W przypadku mutualCertificate10Securityprogramu jest używana wersja WS-Security 1.0, natomiast w programie WS-Security 1.1 jest używany program mutualCertificate11Security. W przypadku programu WCF wersja specyfikacji WS-Security jest określona w atrybucie <messageSecurityVersion zabezpieczeń.>

      Aby ustawić wersję specyfikacji WS-Security, która jest używana do zabezpieczania komunikatów PROTOKOŁU SOAP, ustaw messageSecurityVersion atrybut zabezpieczeń<>. Aby współpracować z programem WSE 3.0, ustaw wartość atrybutu messageSecurityVersion na WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.

    4. Określ, że wersja specyfikacji WS-Addressing z sierpnia 2004 r. jest używana przez usługę <WCF przez dodanie textMessageEncoding> i ustawienie messageVersion wartości na Soap11WSAddressingAugust2004wartość .

      Uwaga

      W przypadku korzystania z protokołu SOAP 1.2 ustaw messageVersion atrybut na Soap12WSAddressingAugust2004.

  2. Określ, że usługa używa powiązania niestandardowego.

    1. binding Ustaw atrybut elementu punktu końcowego><na .customBinding

    2. bindingConfiguration Ustaw atrybut elementu punktu końcowego>< na wartość określoną w name atrybucie< powiązania> niestandardowego.

Przykład

Poniższy przykład kodu określa, że Service.HelloWorldService używa niestandardowego powiązania do współdziałania z klientami programu WSE 3.0. Powiązanie niestandardowe określa, że wersja WS-Addressing i WS-Security 1.1 zestawu specyfikacji z sierpnia 2004 r. jest używana do kodowania wymienianych komunikatów. Komunikaty są zabezpieczone przy użyciu AnonymousForCertificate trybu uwierzytelniania.

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

Zobacz też