Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
TemelHttpBinding> bağlaması <dışında, Windows Communication Foundation'da (WCF) sistem tarafından sağlanan bağlamalar, ileti güvenliği etkinleştirildiğinde otomatik olarak güvenli oturumları kullanır.
Varsayılan olarak, güvenli oturumlar geri dönüştürülen bir Web sunucusundan sağ çıkamaz. Güvenli bir oturum oluşturulduğunda, istemci ve hizmet güvenli oturumla ilişkili anahtarı önbelleğe alır. İletiler değiş tokuş edilirken, yalnızca önbelleğe alınan anahtarın tanımlayıcısı değiştirilir. Web sunucusu geri dönüştürüldüyse, web sunucusu tanımlayıcı için önbelleğe alınmış anahtarı alamayacak şekilde önbellek de geri dönüştürülür. Böyle bir durumda istemciye bir özel durum oluşturulur. Durum bilgisi olan bir güvenlik bağlam belirteci (SCT) kullanan güvenli oturumlar, bir Web sunucusunun geri dönüştürülmesini sağlayabilir. Güvenli oturumda durum bilgisi olan bir SCT kullanma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Güvenli Oturum için Güvenlik Bağlam Belirteci Oluşturma.
Bir hizmetin sistem tarafından sağlanan bağlamalardan birini kullanarak güvenli oturumlar kullandığını belirtmek için
Bir hizmeti, ileti güvenliğini destekleyen sistem tarafından sağlanan bir bağlama kullanacak şekilde yapılandırın.
TemelHttpBinding> bağlaması <dışında, sistem tarafından sağlanan bağlamalar ileti güvenliğini kullanacak şekilde yapılandırıldığında, WCF otomatik olarak güvenli oturumları kullanır. Aşağıdaki tabloda, ileti güvenliğini destekleyen sistem tarafından sağlanan bağlamalar ve ileti güvenliğinin varsayılan güvenlik mekanizması olup olmadığı listelenir.
Sistem tarafından sağlanan bağlama Yapılandırma öğesi İleti güvenliği varsayılan olarak açık BasicHttpBinding <basicHttpBinding> Hayır WSHttpBinding <wsHttpBinding> Yes WSDualHttpBinding <wsDualHttpBinding> Yes WSFederationHttpBinding <wsFederationHttpBinding> Yes NetTcpBinding <netTcpBinding> Hayır NetMsmqBinding <Netmsmqbinding> Hayır Aşağıdaki kod örneği wsHttpBinding>, ileti güvenliği ve güvenli oturumları kullanan< adlı
wsHttpBinding_Calculatorbağlamayı belirtmek için yapılandırmayı kullanır.<bindings> <WSHttpBinding> <binding name = "wsHttpBinding_Calculator"> <security mode="Message"> <message clientCredentialType="Windows"/> </security> </binding> </WSHttpBinding> </bindings>Aşağıdaki kod örneği, hizmetin güvenliğini
secureCalculatorsağlamak için wsHttpBinding>, ileti güvenliği ve güvenli oturumların kullanıldığını belirtir<.WSHttpBinding myBinding = new WSHttpBinding(); myBinding.Security.Mode = SecurityMode.Message; myBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; // Create the Type instances for later use and the URI for // the base address. Type contractType = typeof(ICalculator); Type serviceType = typeof(Calculator); Uri baseAddress = new Uri("http://localhost:8036/serviceModelSamples/"); // Create the ServiceHost and add an endpoint, then start // the service. ServiceHost myServiceHost = new ServiceHost(serviceType, baseAddress); myServiceHost.AddServiceEndpoint (contractType, myBinding, "secureCalculator"); myServiceHost.Open();Dim myBinding As New WSHttpBinding() myBinding.Security.Mode = SecurityMode.Message myBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows ' Create the Type instances for later use and the URI for ' the base address. Dim contractType As Type = GetType(ICalculator) Dim serviceType As Type = GetType(Calculator) Dim baseAddress As New Uri("http://localhost:8036/serviceModelSamples/") ' Create the ServiceHost and add an endpoint, then start ' the service. Dim myServiceHost As New ServiceHost(serviceType, baseAddress) myServiceHost.AddServiceEndpoint(contractType, myBinding, "secureCalculator") myServiceHost.Open()Not
özniteliği olarak ayarlanarak
establishSecurityContextwsHttpBinding> için <güvenli oturumlar kapatılabilir.falseSistem tarafından sağlanan diğer bağlamalar için güvenli oturumlar yalnızca özel bir bağlama oluşturularak kapatılabilir.
Bir hizmetin özel bağlama kullanarak güvenli oturumlar kullandığını belirtmek için
SOAP iletilerinin güvenli bir oturum tarafından korunduğunu belirten özel bir bağlama oluşturun.
Özel bağlama oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Sistem Tarafından Sağlanan Bağlamayı Özelleştirme.
Aşağıdaki kod örneği, güvenli bir oturum kullanarak ileti veren özel bir bağlama belirtmek için yapılandırmayı kullanır.
<bindings> <!-- configure a custom binding --> <customBinding> <binding name="customBinding_Calculator"> <security authenticationMode="SecureConversation" /> <secureConversationBootstrap authenticationMode="SspiNegotiated" /> <textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8"/> <httpTransport/> </binding> </customBinding> </bindings>Aşağıdaki kod örneği, güvenli bir oturumu önyüklemek için kimlik doğrulama modunu kullanan MutualCertificate özel bir bağlama oluşturur.
SecurityBindingElement security = SecurityBindingElement.CreateMutualCertificateBindingElement(); // Use a secure session. security = SecurityBindingElement.CreateSecureConversationBindingElement(security, true); // Specify whether derived keys are required. security.SetKeyDerivation(true); // Create the custom binding. CustomBinding myBinding = new CustomBinding(security, new HttpTransportBindingElement()); // Create the Type instances for later use and the URI for // the base address. Type contractType = typeof(ICalculator); Type serviceType = typeof(Calculator); Uri baseAddress = new Uri("http://localhost:8036/serviceModelSamples/"); // Create the ServiceHost and add an endpoint, then start // the service. ServiceHost myServiceHost = new ServiceHost(serviceType, baseAddress); myServiceHost.AddServiceEndpoint (contractType, myBinding, "secureCalculator"); myServiceHost.Open();Dim security As SecurityBindingElement = SecurityBindingElement.CreateMutualCertificateBindingElement() ' Use a secure session. security = SecurityBindingElement.CreateSecureConversationBindingElement(security, True) ' Specify whether derived keys are required. security.SetKeyDerivation(True) ' Create the custom binding. Dim myBinding As New CustomBinding(security, New HttpTransportBindingElement()) ' Create the Type instances for later use and the URI for ' the base address. Dim contractType As Type = GetType(ICalculator) Dim serviceType As Type = GetType(Calculator) Dim baseAddress As New Uri("http://localhost:8036/serviceModelSamples/") ' Create the ServiceHost and add an endpoint, then start ' the service. Dim myServiceHost As New ServiceHost(serviceType, baseAddress) myServiceHost.AddServiceEndpoint(contractType, myBinding, "secureCalculator") myServiceHost.Open()