Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menggunakan Windows Communication Foundation (WCF), layanan dapat menentukan bagaimana klien diautentikasi ke layanan. Misalnya, layanan dapat menetapkan bahwa klien diautentikasi dengan sertifikat.
Untuk menentukan jenis kredensial klien
Ambil metadata dari titik akhir metadata layanan. Metadata biasanya terdiri dari dua file: kode klien dalam bahasa pemrograman pilihan Anda (defaultnya adalah Visual C#), dan file konfigurasi XML. Salah satu cara untuk mengambil metadata adalah dengan menggunakan alat Svcutil.exe untuk mengembalikan kode klien dan konfigurasi klien. Untuk informasi selengkapnya, lihat Mengambil Metadata dan Alat Utilitas Metadata ServiceModel (Svcutil.exe).
Buka file konfigurasi XML. Jika Anda menggunakan alat Svcutil.exe, nama default file adalah Output.config.
<Temukan elemen keamanan> dengan
modeatribut (<mode keamanan =MessageOrTransport> di manaMessageOrTransportdiatur ke salah satu mode keamanan.Temukan elemen turunan yang cocok dengan nilai mode. Misalnya, jika mode diatur ke Pesan, temukan <elemen pesan> yang terkandung dalam <elemen keamanan> .
Perhatikan nilai yang ditetapkan ke atribut
clientCredentialType. Nilai aktual tergantung pada mode mana yang digunakan, transportasi, atau pesan.
Kode XML berikut menunjukkan konfigurasi untuk klien yang menggunakan keamanan pesan dan memerlukan sertifikat untuk mengautentikasi klien.
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Certificate" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
Contoh: Mode Transportasi TCP dengan Sertifikat sebagai Kredensial Klien
Contoh ini mengatur mode keamanan ke mode Transportasi dan mengatur nilai kredensial klien ke sertifikat X.509. Prosedur berikut menunjukkan cara mengatur nilai kredensial klien pada klien dalam kode dan konfigurasi. Ini mengasumsikan bahwa Anda telah menggunakan Alat Utilitas Metadata ServiceModel (Svcutil.exe) untuk mengembalikan metadata (kode dan konfigurasi) dari layanan. Untuk informasi selengkapnya, lihat Cara: Membuat Klien.
Untuk menentukan nilai kredensial klien pada klien dalam kode
Gunakan Alat Utilitas Metadata ServiceModel (Svcutil.exe) untuk menghasilkan kode dan konfigurasi dari layanan.
Buat instans klien WCF menggunakan kode yang dihasilkan.
Pada kelas klien, atur properti ClientCredentials dari kelas ClientBase<TChannel> ke nilai yang sesuai. Contoh ini mengatur properti ke sertifikat X.509 dengan menggunakan metode dari kelas SetCertificateX509CertificateInitiatorClientCredential.
// 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 TryAnda dapat menggunakan salah satu enumerasi dari kelas X509FindType. Nama subjek digunakan di sini jika sertifikat diubah (karena tanggal kedaluwarsa). Menggunakan nama subjek memungkinkan infrastruktur untuk menemukan sertifikat lagi.
Untuk menentukan nilai kredensial klien pada klien dalam konfigurasi
<Tambahkan elemen clientCredentials> ke <elemen perilaku>. Pastikan untuk mengatur atribut yang diperlukan
nameke nilai yang sesuai.<Tambahkan elemen clientCertificate> ke <elemen clientCredentials>.
Atur atribut berikut ke nilai yang sesuai:
storeLocation, ,storeNamex509FindType, danfindValue, seperti yang ditunjukkan dalam kode berikut. Untuk informasi selengkapnya tentang sertifikat, lihat Bekerja dengan Sertifikat.<behaviors> <endpointBehaviors> <behavior name="endpointCredentialBehavior"> <clientCredentials> <clientCertificate findValue="Contoso.com" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors>Saat mengonfigurasi klien, tentukan perilaku dengan mengatur
behaviorConfigurationatribut<endpoint>elemen, seperti yang ditunjukkan dalam kode berikut. Elemen endpoint adalah turunan dari <elemen klien>. Selain itu, tentukan nama konfigurasi pengikatan dengan mengaturbindingConfigurationatribut ke pengikatan untuk klien. Jika Anda menggunakan file konfigurasi yang dihasilkan, nama pengikatan akan dibuat secara otomatis. Dalam contoh ini, namanya adalah"tcpBindingWithCredential".<client> <endpoint name ="" address="net.tcp://contoso.com:8036/aloha" binding="netTcpBinding" bindingConfiguration="tcpBindingWithCredential" behaviorConfiguration="endpointCredentialBehavior" /> </client>
Lihat juga
- NetTcpBinding
- SetCertificate
- X509CertificateRecipientServiceCredential
- ClientBase<TChannel>
- X509CertificateInitiatorClientCredential
- Pemrograman Keamanan WCF
- Memilih Jenis Kredensial
- Alat Utilitas Metadata ServiceModel (Svcutil.exe)
- Bekerja dengan Sertifikat
- Cara: Membuat Klien
- <netTcpBinding>
- <keamanan>
- <pesan>
- <perilaku>
- <Perilaku>
- <clientCertificate>
- <clientCredentials>