Nasıl yapılır: Güvenlik Modunu Ayarlama

Windows Communication Foundation (WCF) güvenliği, önceden tanımlanmış bağlamaların çoğunda bulunan üç ortak güvenlik moduna sahiptir: aktarım, ileti ve "ileti kimlik bilgileriyle aktarım." İki bağlamaya özgü ek iki mod vardır: üzerinde BasicHttpBindingbulunan "yalnızca aktarım-kimlik bilgisi" modu ve üzerinde NetMsmqBindingbulunan "Her İkisi" modu. Ancak, bu konu üç yaygın güvenlik moduna odaklanır: Transport, Messageve TransportWithMessageCredential.

Önceden tanımlanmış her bağlamanın bu modların tümünü desteklemediğini unutmayın. Bu konu, ve NetTcpBinding sınıfları ile WSHttpBinding modu ayarlar ve hem program aracılığıyla hem de yapılandırma aracılığıyla modun nasıl ayarlandığını gösterir.

Daha fazla bilgi için bkz. WCF güvenliği, bkz . Güvenliğe Genel Bakış, Hizmetleri Güvenli Hale Getirme ve Hizmetleri ve İstemcileri Güvenli Hale Getirme. Aktarım modu ve ileti hakkında daha fazla bilgi için bkz . Aktarım Güvenliği ve İleti Güvenliği.

Kodda güvenlik modunu ayarlamak için

  1. Kullanmakta olduğunuz bağlama sınıfının bir örneğini oluşturun. Önceden tanımlanmış bağlamaların listesi için bkz . Sistem Tarafından Sağlanan Bağlamalar. Bu örnek sınıfının bir örneğini WSHttpBinding oluşturur.

  2. Mode özelliği tarafından döndürülen nesnesinin Security özelliğini ayarlayın.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    

    Alternatif olarak, aşağıdaki kodda gösterildiği gibi modu ileti olarak ayarlayın.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    

    Veya modu, aşağıdaki kodda gösterildiği gibi ileti kimlik bilgileriyle taşınacak şekilde ayarlayın.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.TransportWithMessageCredential;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
  3. Modu, aşağıdaki kodda gösterildiği gibi bağlamanın oluşturucusunda da ayarlayabilirsiniz.

    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    
    Dim b As New WSHttpBinding(SecurityMode.Message)
    

ClientCredentialType Özelliğini Ayarlama

Modun üç değerden birine ayarlanması özelliği nasıl ayarlayabileceğinizi ClientCredentialType belirler. Örneğin, sınıfını WSHttpBinding kullanarak modu olarak Transport ayarlamak, sınıfın ClientCredentialTypeHttpTransportSecurity özelliğini uygun bir değere ayarlamanız gerektiği anlamına gelir.

Aktarım modu için ClientCredentialType özelliğini ayarlamak için

  1. Bağlamanın bir örneğini oluşturun.

  2. Mode özelliğini Transport olarak ayarlayın.

  3. ClientCredential özelliğini uygun bir değere ayarlayın. Aşağıdaki kod özelliğini olarak Windowsayarlar.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
    

İleti modu için ClientCredentialType özelliğini ayarlamak için

  1. Bağlamanın bir örneğini oluşturun.

  2. Mode özelliğini Message olarak ayarlayın.

  3. ClientCredential özelliğini uygun bir değere ayarlayın. Aşağıdaki kod özelliğini olarak Certificateayarlar.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
    

Yapılandırmada Mode ve ClientCredentialType özelliğini ayarlamak için

  1. Yapılandırma dosyasının <bağlamalar> öğesine uygun bir bağlama öğesi ekleyin. Aşağıdaki örnek bir <wsHttpBinding> öğesi ekler.

  2. Bir <binding> öğe ekleyin ve özniteliğini name uygun bir değere ayarlayın.

  3. Bir <security> öğe ekleyin ve özniteliğini mode , Transportveya TransportWithMessageCredentialolarak Messageayarlayın.

  4. Mod olarak ayarlanırsa Transport, bir <transport> öğe ekleyin ve özniteliğini clientCredential uygun bir değere ayarlayın.

    Aşağıdaki örnek modu "Transport"olarak ayarlar ve ardından öğesinin clientCredentialType<transport> özniteliğini "Windows"olarak ayarlar.

    <wsHttpBinding>
    <binding name="TransportSecurity">
        <security mode="Transport" >
           <transport clientCredentialType = "Windows" />
        </security>
    </binding>
    </wsHttpBinding >
    

    Alternatif olarak, öğesini "Message", ardından bir <"message"> öğe olarak ayarlayınsecurity mode. Bu örnekte "Certificate" olarak ayarlanıyorclientCredentialType.

    <wsHttpBinding>
    <binding name="MessageSecurity">
        <security mode="Message" >
           <message clientCredentialType = "Certificate" />
        </security>
    </binding>
    </wsHttpBinding >
    

    değerinin TransportWithMessageCredential kullanılması özel bir durumdur ve aşağıda açıklanmıştır.

TransportWithMessageCredential kullanma

Güvenlik modunu olarak TransportWithMessageCredentialayarlarken aktarım, aktarım düzeyi güvenliği sağlayan gerçek mekanizmayı belirler. Örneğin, HTTP protokolü HTTP (HTTPS) üzerinden Güvenli Yuva Katmanı (SSL) kullanır. Bu nedenle, herhangi bir aktarım güvenlik nesnesinin (gibiHttpTransportSecurity) özelliğinin ayarlanması ClientCredentialType yoksayılır. Başka bir deyişle, yalnızca ileti güvenlik nesnesinin (bağlama için WSHttpBinding nesneNonDualMessageSecurityOverHttp) değerini ayarlayabilirsinizClientCredentialType.

Daha fazla bilgi için bkz . Nasıl yapılır: Aktarım Güvenliği ve İleti Kimlik Bilgilerini Kullanma.

Ayrıca bkz.