Aracılığıyla paylaş


Nasıl yapılır: WCF Hizmetlerini WSE 3.0 İstemcileriyle Birlikte Çalışmak için Yapılandırma

WCF hizmetleri WS-Addressing belirtiminin Ağustos 2004 sürümünü kullanacak şekilde yapılandırıldığında Windows Communication Foundation (WCF) hizmetleri Microsoft .NET (WSE) istemcileri için Web Hizmetleri Geliştirmeleri 3.0 ile uyumlu kablo düzeyindedir.

WcF hizmetinin WSE 3.0 istemcileriyle birlikte çalışmasını sağlamak için

  1. WCF hizmeti için özel bir bağlama tanımlayın.

    İleti kodlaması için WS-Addressing belirtiminin Ağustos 2004 sürümünün kullanılacağını belirtmek için özel bir bağlama oluşturulmalıdır.

    1. Hizmetin yapılandırma dosyasının bağlamalarına> bir alt< customBinding> ekleyin.<

    2. customBinding öğesine bağlama ekleyerek ve özniteliğini ayarlayarak name bağlama>< için bir< ad belirtin.>

    3. Bağlamaya bir alt <güvenlik> ekleyerek WSE 3.0 ile uyumlu iletilerin güvenliğini sağlamak için kullanılan bir kimlik doğrulama modu ve WS-Security belirtimlerinin <sürümünü belirtin.>

      Kimlik doğrulama modunu ayarlamak için güvenliğin authenticationMode><özniteliğini ayarlayın. Kimlik doğrulama modu, WSE 3.0'daki anahtar teslimi güvenlik onaylarına kabaca eşdeğerdir. Aşağıdaki tablo WCF'deki kimlik doğrulama modlarını WSE 3.0'daki anahtar teslimi güvenlik onaylarına eşler.

      WCF Kimlik Doğrulama Modu WSE 3.0 anahtar teslimi güvenlik onayı
      AnonymousForCertificate anonymousForCertificateSecurity
      Kerberos kerberosSecurity
      MutualCertificate mutualCertificate10Security*
      MutualCertificate mutualCertificate11Security*
      UserNameOverTransport usernameOverTransportSecurity
      UserNameForCertificate usernameForCertificateSecurity

      * ve mutualCertificate11Security anahtar teslimi güvenlik onayları arasındaki mutualCertificate10Security birincil farklardan biri, WSE'nin SOAP iletilerinin güvenliğini sağlamak için kullandığı WS-Security belirtiminin sürümüdür. için mutualCertificate10SecurityWS-Security 1.0 kullanılırken, WS-Security 1.1 için mutualCertificate11Securitykullanılır. WCF için, güvenlik özniteliğinde messageSecurityVersion WS-Security belirtiminin>< sürümü belirtilir.

      SOAP iletilerinin güvenliğini sağlamak için kullanılan WS-Security belirtiminin sürümünü ayarlamak için, güvenliğin>< özniteliğini ayarlayın.messageSecurityVersion WSE 3.0 ile birlikte çalışabilmek için özniteliğinin messageSecurityVersion değerini olarak WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10ayarlayın.

    4. WS-Addressing belirtiminin Ağustos 2004 sürümünün WCF tarafından textMessageEncoding eklenerek kullanıldığını belirtin ve değerini Soap11WSAddressingAugust2004olarak ayarlayınmessageVersion.<>

      Not

      SOAP 1.2 kullanırken özniteliğini messageVersion olarak Soap12WSAddressingAugust2004ayarlayın.

  2. Hizmetin özel bağlamayı kullandığını belirtin.

    1. binding endpoint> öğesinin< özniteliğini olarak customBindingayarlayın.

    2. bindingConfiguration Uç nokta> öğesinin <özniteliğini, özel bağlama için bağlamanın<> özniteliğinde name belirtilen değere ayarlayın.

Örnek

Aşağıdaki kod örneği, WSE 3.0 istemcileri ile birlikte çalışmak için özel bir bağlama kullandığını belirtir Service.HelloWorldService . Özel bağlama, WS-Addressing'in Ağustos 2004 sürümünün ve WS-Security 1.1 belirtim kümesinin, değiştirilen iletileri kodlamak için kullanıldığını belirtir. İletilerin güvenliği kimlik doğrulama modu kullanılarak AnonymousForCertificate sağlanır.

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

Ayrıca bkz.