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.
Hizmet, Windows Communication Foundation 'ı (WCF) kullanarak bir istemcinin hizmette kimlik doğrulamasının nasıl yapılacağını belirtebilir. Örneğin, bir hizmet istemcinin bir sertifikayla kimliğinin doğrulandığını belirtebilir.
İstemci kimlik bilgisi türünü belirlemek için
Hizmetin meta veri uç noktasından meta verileri alın. Meta veriler genellikle iki dosyadan oluşur: seçtiğiniz programlama dilindeki istemci kodu (varsayılan değer Visual C#'dir) ve bir XML yapılandırma dosyası. Meta verileri almanın bir yolu, istemci kodunu ve istemci yapılandırmasını döndürmek için Svcutil.exe aracını kullanmaktır. Daha fazla bilgi için bkz. Meta Verileri Alma ve ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe).
XML yapılandırma dosyasını açın. Svcutil.exe aracını kullanırsanız, dosyanın varsayılan adı Output.configolur.
özniteliğe
sahip öğesini bulun. (güvenlik güvenlik modu = burada güvenlik modlarından birine ayarlanır). Mod değeriyle eşleşen alt öğeyi bulun. Örneğin, mod İleti olarak ayarlandıysa, güvenlik< öğesinde> bulunan ileti< öğesini bulun>.
Özniteliğine atanan değeri not edin
clientCredentialType. Gerçek değer, hangi modun kullanıldığına, aktarıma veya iletiye bağlıdır.
Aşağıdaki XML kodu, ileti güvenliğini kullanan ve istemcinin kimliğini doğrulamak için sertifika gerektiren bir istemcinin yapılandırmasını gösterir.
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Certificate" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
Örnek: İstemci Kimlik Bilgisi Olarak Sertifika ile TCP Aktarım Modu
Bu örnek, güvenlik modunu Aktarım moduna ayarlar ve istemci kimlik bilgisi değerini bir X.509 sertifikasına ayarlar. Aşağıdaki yordamlarda, kod ve yapılandırmada istemcide istemci kimlik bilgisi değerinin nasıl ayarlanacağı gösterilmektedir. Bu, hizmetten meta verileri (kod ve yapılandırma) döndürmek için ServiceModel Meta Veri Yardımcı Programı Aracı'nı (Svcutil.exe ) kullandığınız varsayılır. Daha fazla bilgi için bkz . Nasıl yapılır: İstemci Oluşturma.
Kodda istemcide istemci kimlik bilgisi değerini belirtmek için
Hizmetten kod ve yapılandırma oluşturmak için ServiceModel Meta Veri Yardımcı Programı Aracı'nı (Svcutil.exe) kullanın.
Oluşturulan kodu kullanarak WCF istemcisinin bir örneğini oluşturun.
İstemci sınıfında, ClientCredentials sınıfının ClientBase<TChannel> özelliğini uygun bir değere ayarlayın. Bu örnek, X509CertificateInitiatorClientCredential sınıfının SetCertificate yöntemini kullanarak özelliği bir X.509 sertifikasına ayarlar.
// Create a binding using Transport and a certificate. NetTcpBinding b = new NetTcpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate; // Create an EndPointAddress. EndpointAddress ea = new EndpointAddress( "net.tcp://localHost:8036/Calculator/MyCalculator"); // Create the client. CalculatorClient cc = new CalculatorClient(b, ea); // Set the certificate for the client. cc.ClientCredentials.ClientCertificate.SetCertificate( StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "cohowinery.com"); try { cc.Open(); // Begin using the client. Console.WriteLine(cc.Divide(1001, 2)); cc.Close(); } catch (AddressAccessDeniedException adExc) { Console.WriteLine(adExc.Message); Console.ReadLine(); } catch (System.Exception exc) { Console.WriteLine(exc.Message); Console.ReadLine(); }' Create a binding using Transport and a certificate. Dim b As New NetTcpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate ' Create an EndPointAddress. Dim ea As New EndpointAddress("net.tcp://localHost:8036/Calculator/MyCalculator") ' Create the client. Dim cc As New CalculatorClient(b, ea) ' Set the certificate for the client. cc.ClientCredentials.ClientCertificate.SetCertificate( _ StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "cohowinery.com") Try cc.Open() ' Begin using the client. Console.WriteLine(cc.Divide(1001, 2)) cc.Close() Catch adExc As AddressAccessDeniedException Console.WriteLine(adExc.Message) Console.ReadLine() Catch exc As System.Exception Console.WriteLine(exc.Message) Console.ReadLine() End Trysınıfının numaralandırmalarından herhangi birini X509FindType kullanabilirsiniz. Sertifikanın değiştirilmesi durumunda (son kullanma tarihi nedeniyle) konu adı burada kullanılır. Konu adını kullanmak altyapının sertifikayı yeniden bulmasına olanak tanır.
Yapılandırmada istemci kimlik bilgisi değerini istemcide belirtmek için
<davranış> öğesini <behaviors> öğesine ekleyin.
behaviors öğesine clientCredentials<> öğesi <ekleyin.> Gerekli
nameözniteliği uygun bir değere ayarladığınızdan emin olun.<clientCertificate> öğesini <clientCredentials> öğesine ekleyin.
Aşağıdaki öznitelikleri, aşağıdaki kodda gösterildiği gibi uygun değerlere ayarlayın:
storeLocation,storeNamex509FindType, vefindValue. Sertifikalar hakkında daha fazla bilgi için bkz. Sertifikalarla Çalışma.<behaviors> <endpointBehaviors> <behavior name="endpointCredentialBehavior"> <clientCredentials> <clientCertificate findValue="Contoso.com" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors>İstemciyi yapılandırırken, aşağıdaki kodda gösterildiği gibi
behaviorConfigurationözniteliğini ayarlayarak<endpoint>öğesinin davranışını belirtin. Endpoint öğesi, istemci< öğesinin> alt öğesidir. Ayrıca,bindingConfigurationözniteliğini istemcinin bağlaması için ayarlayarak bağlama yapılandırmasının adını belirtin. Oluşturulan bir yapılandırma dosyası kullanıyorsanız, bağlamanın adı otomatik olarak oluşturulur. Bu örnekte adı şeklindedir"tcpBindingWithCredential".<client> <endpoint name ="" address="net.tcp://contoso.com:8036/aloha" binding="netTcpBinding" bindingConfiguration="tcpBindingWithCredential" behaviorConfiguration="endpointCredentialBehavior" /> </client>
Ayrıca bakınız
- NetTcpBinding
- SetCertificate
- X509CertificateRecipientServiceCredential
- ClientBase<TChannel>
- X509CertificateInitiatorClientCredential
- WCF Güvenliğini Programlama
- Kimlik Bilgisi Türü Seçme
- ServiceModel Meta Veri Yardımcı Programı (Svcutil.exe)
- Sertifikalarla Çalışma
- Nasıl yapılır: İstemci Oluşturma
- <netTcpBinding>
- <güvenlik>
- <İleti>
- <davranış>
- <Davranış>
- <istemciSertifikası>
- <clientCredentials>