Cara: Mengatur Mode Keamanan
Keamanan Windows Communication Foundation (WCF) memiliki tiga mode keamanan umum yang ditemukan pada sebagian besar pengikatan yang telah ditentukan sebelumnya: transportasi, pesan, dan "transportasi dengan mandat pesan." Dua mode tambahan khusus untuk dua pengikatan: mode "hanya mandat transportasi" yang ditemukan pada BasicHttpBinding, dan mode "Keduanya", ditemukan di NetMsmqBinding. Namun, topik ini berkonsentrasi pada tiga mode keamanan umum: Transport, Message, dan TransportWithMessageCredential.
Perhatikan bahwa tidak setiap pengikatan yang telah ditentukan sebelumnya mendukung semua mode ini. Topik ini mengatur mode dengan kelas WSHttpBinding dan NetTcpBinding serta menunjukkan cara mengatur mode baik secara terprogram maupun melalui konfigurasi.
Untuk informasi selengkapnya, lihat Keamanan WCF, lihat Ringkasan Keamanan, Mengamankan Layanan, dan Mengamankan Layanan dan Klien. Untuk informasi selengkapnya tentang mode transportasi dan pesan, lihat Keamanan Transportasi dan Keamanan Pesan.
Untuk mengatur mode keamanan dalam kode
Buat instans kelas pengikatan yang Anda gunakan. Untuk daftar pengikatan yang telah ditentukan sebelumnya, lihat Pengikatan yang Disediakan Sistem. Contoh berikut membuat instans dari kelas WSHttpBinding.
Atur properti
Mode
dari objek yang dikembalikan oleh propertiSecurity
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
Atau, atur mode ke pesan, seperti yang ditunjukkan dalam kode berikut.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
Atau atur mode untuk diangkut dengan mandat pesan, seperti yang ditunjukkan dalam kode berikut.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
Anda juga dapat mengatur mode di konstruktor pengikatan, seperti yang ditunjukkan dalam kode berikut.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
Mengatur Properti ClientCredentialType
Mengatur mode ke salah satu dari tiga nilai menentukan cara Anda mengatur properti ClientCredentialType
. Misalnya, menggunakan kelas WSHttpBinding, mengatur mode ke Transport
berarti Anda harus mengatur properti ClientCredentialType dari kelas HttpTransportSecurity ke nilai yang sesuai.
Untuk mengatur properti ClientCredentialType untuk mode Transportasi
Buat instans pengikatan.
Atur properti
Mode
keTransport
.Atur properti
ClientCredential
ke nilai yang sesuai. Kode berikut mengatur properti keWindows
.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
Untuk mengatur properti ClientCredentialType untuk mode Pesan
Buat instans pengikatan.
Atur properti
Mode
keMessage
.Atur properti
ClientCredential
ke nilai yang sesuai. Kode berikut mengatur properti keCertificate
.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
Untuk mengatur properti Mode dan ClientCredentialType dalam konfigurasi
Tambahkan elemen pengikatan yang sesuai ke elemen <pengikatan> file konfigurasi. Contoh berikut menambahkan elemen <wsHttpBinding>.
Tambahkan elemen
<binding>
dan atur atributname
ke nilai yang sesuai.Tambahkan elemen
<security>
dan atur atributmode
keMessage
,Transport
, atauTransportWithMessageCredential
.Jika mode diatur ke
Transport
, tambahkan elemen<transport>
dan atur atributclientCredential
ke nilai yang sesuai.Contoh berikut mengatur mode ke "
Transport"
, lalu mengatur atributclientCredentialType
elemen<transport>
ke "Windows"
.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
Atau, atur
security mode
ke "Message"
, diikuti oleh<"message">
elemen. Contoh ini mengaturclientCredentialType
ke “Certificate"
.<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
Menggunakan nilai TransportWithMessageCredential adalah kasus khusus, dan dijelaskan di bawah ini.
Menggunakan TransportWithMessageCredential
Saat menyetel mode keamanan ke TransportWithMessageCredential
, transportasi menentukan mekanisme sebenarnya yang menyediakan keamanan tingkat transportasi. Misalnya, protokol HTTP menggunakan Secure Sockets Layer (SSL) melalui HTTP (HTTPS). Oleh karena itu, pengaturan properti ClientCredentialType
dari objek keamanan transportasi apa pun (seperti HttpTransportSecurity) diabaikan. Dengan kata lain, Anda hanya dapat mengatur objek ClientCredentialType
keamanan pesan (untuk pengikatan WSHttpBinding
, objek NonDualMessageSecurityOverHttp).
Untuk informasi selengkapnya, lihat Cara: Menggunakan Keamanan Transportasi dan Mandat Pesan.