Cara: Membuat Pengikatan Kustom Menggunakan SecurityBindingElement
Windows Communication Foundation (WCF) menyertakan beberapa pengikatan yang disediakan sistem yang dapat dikonfigurasi tetapi tidak memberikan fleksibilitas penuh saat mengonfigurasi semua opsi keamanan yang didukung WCF. Topik ini menunjukkan cara membuat pengikatan kustom langsung dari elemen pengikatan individual dan menyoroti beberapa pengaturan keamanan yang dapat ditentukan saat membuat pengikatan tersebut. Untuk mengetahui informasi selengkapnya tentang cara membuat pengikatan kustom, lihat Memperluas Pengikatan.
Peringatan
SecurityBindingElement tidak mendukung bentuk saluran IDuplexSessionChannel, yang merupakan bentuk saluran default yang digunakan oleh transportasi TCP ketika TransferMode diatur ke Buffered. Anda harus mengatur TransferMode ke Streamed agar dapat menggunakan SecurityBindingElement dalam skenario ini.
Membuat Pengikatan Kustom
Dalam WCF semua pengikatan terdiri dari elemen pengikatan. Setiap elemen pengikatan adalah turunan dari kelas BindingElement. Untuk pengikatan yang disediakan sistem standar, elemen pengikatan dibuat dan dikonfigurasi untuk Anda, meskipun Anda dapat menyesuaikan beberapa pengaturan properti.
Sebaliknya, untuk membuat pengikatan kustom, elemen pengikatan dibuat dan dikonfigurasi dan CustomBinding dibuat dari elemen pengikatan.
Untuk melakukan ini, Anda menambahkan elemen pengikatan individual ke koleksi yang diwakili oleh instans kelas BindingElementCollection, kemudian atur properti Elements
dari CustomBinding
sama dengan objek tersebut. Anda harus menambahkan elemen pengikatan dalam urutan berikut: Aliran Transaksi, Sesi Andal, Keamanan, Dupleks Komposit, Satu arah, Keamanan Aliran, Pengodean Pesan, dan Transportasi. Perhatikan bahwa tidak semua elemen pengikatan yang tercantum diperlukan dalam setiap pengikatan.
SecurityBindingElement
Tiga elemen pengikatan terkait dengan keamanan tingkat pesan, yang semuanya berasal dari kelas SecurityBindingElement. Ketiganya adalah TransportSecurityBindingElement, SymmetricSecurityBindingElement, dan AsymmetricSecurityBindingElement. TransportSecurityBindingElement digunakan untuk memberikan keamanan mode Campuran. Dua elemen lainnya digunakan ketika lapisan pesan memberikan keamanan.
Kelas tambahan digunakan saat keamanan tingkat transportasi disediakan:
Elemen Pengikatan yang Diperlukan
Ada sejumlah besar kemungkinan elemen pengikatan yang dapat digabungkan menjadi pengikatan. Tidak semua kombinasi ini valid. Bagian ini menjelaskan elemen yang diperlukan yang harus ada dalam pengikatan keamanan.
Pengikatan keamanan yang valid bergantung pada banyak faktor, termasuk yang berikut ini:
Mode keamanan.
Protokol transportasi.
Pola pertukaran pesan (MEP) yang ditentukan dalam kontrak.
Tabel berikut ini memperlihatkan konfigurasi tumpukan elemen pengikatan yang valid untuk setiap kombinasi faktor sebelumnya. Perhatikan bahwa ini adalah persyaratan minimal. Anda dapat menambahkan elemen pengikatan tambahan ke pengikatan, seperti elemen pengikatan pengodean pesan, elemen pengikatan transaksi, dan elemen pengikatan lainnya.
Mode Keamanan | Transportasi | Pola Pertukaran Pesan Kontrak | Pola Pertukaran Pesan Kontrak | Pola Pertukaran Pesan Kontrak |
---|---|---|---|---|
Datagram |
Request Reply |
Duplex |
||
Transportasi | Https | |||
OneWayBindingElement | ||||
HttpsTransportBindingElement | HttpsTransportBindingElement | |||
TCP | ||||
OneWayBindingElement | ||||
StreamSecurityBindingElement SSL atau Windows | StreamSecurityBindingElement SSL atau Windows | StreamSecurityBindingElement SSL atau Windows | ||
TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
Pesan | Http | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement (authentication mode = SecureConversation) |
CompositeDuplexBindingElement | ||||
OneWayBindingElement | OneWayBindingElement | |||
HttpTransportBindingElement | HttpTransportBindingElement | HttpTransportBindingElement | ||
Tcp | SecurityBindingElement | SecurityBindingElement | SymmetricSecurityBindingElement (authentication mode = SecureConversation) | |
TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
Campuran (transportasi dengan kredensial pesan) | Https | TransportSecurityBindingElement | TransportSecurityBindingElement | |
OneWayBindingElement | ||||
HttpsTransportBindingElement | HttpsTransportBindingElement | |||
TCP | TransportSecurityBindingElement | SymmetricSecurityBindingElement (authentication mode = SecureConversation) | SymmetricSecurityBindingElement (authentication mode = SecureConversation) | |
OneWayBindingElement | ||||
StreamSecurityBindingElement SSL atau Windows | StreamSecurityBindingElement SSL atau Windows | StreamSecurityBindingElement SSL atau Windows | ||
TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement |
Perhatikan bahwa ada banyak pengaturan yang dapat dikonfigurasi pada SecurityBindingElements. Untuk informasi selengkapnya, lihat Mode Autentikasi SecurityBindingElement.
Untuk informasi selengkapnya, lihat Percakapan Aman dan Sesi Aman.
Prosedur
Untuk membuat pengikatan kustom yang menggunakan SymmetricSecurityBindingElement
Buat instans kelas BindingElementCollection dengan nama
outputBec
.Panggil metode statis
M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true)
, yang mengembalikan instans kelas SymmetricSecurityBindingElement.Tambahkan SymmetricSecurityBindingElement ke koleksi (
outputBec
) dengan memanggil metodeAdd
dari Collection<T> kelas BindingElement.Buat instans kelas TextMessageEncodingBindingElement dan tambahkan ke koleksi (
outputBec
). Ini menentukan pengodean yang digunakan oleh pengikatan.Buat HttpTransportBindingElement dan tambahkan ke koleksi (
outputBec
). Ini menentukan bahwa pengikatan menggunakan transportasi HTTP.Buat pengikatan kustom baru dengan membuat instans kelas CustomBinding dan meneruskan koleksi
outputBec
ke konstruktor.Pengikatan kustom yang dihasilkan berbagi banyak karakteristik yang sama dengan WSHttpBinding standar. Ini menentukan keamanan tingkat pesan dan kredensial Windows tetapi menonaktifkan sesi aman, mengharuskan kredensial layanan ditentukan di luar band, dan tidak mengenkripsi tanda tangan. Yang terakhir hanya dapat dikontrol dengan mengatur properti MessageProtectionOrder seperti yang ditunjukkan pada langkah 4. Dua lainnya dapat dikontrol menggunakan pengaturan pada pengikatan standar.
Contoh
Deskripsi
Contoh berikut menyediakan fungsi lengkap untuk membuat pengikatan kustom yang menggunakan SymmetricSecurityBindingElement.
Kode
// Create an empty CustomBinding to populate
CustomBinding binding = new CustomBinding();
// Create a SymmetricSecurityBindingElement.
SymmetricSecurityBindingElement ssbe =
SecurityBindingElement.CreateSspiNegotiationBindingElement(true);
// Add the SymmetricSecurityBindingElement to the BindingElementCollection.
binding.Elements.Add(ssbe);
binding.Elements.Add(new TextMessageEncodingBindingElement());
binding.Elements.Add(new HttpTransportBindingElement());
return new CustomBinding(binding);
Public Shared Function CreateCustomBinding() As Binding
' Create an empty Custom Binding to populate,
Dim binding As New CustomBinding()
' Create a SymmetricSecurityBindingElement.
Dim ssbe As SymmetricSecurityBindingElement
ssbe = SecurityBindingElement.CreateSspiNegotiationBindingElement(True)
' Add the SymmetricSecurityBindingElement to the BindingElementCollection.
binding.Elements.Add(ssbe)
binding.Elements.Add(New TextMessageEncodingBindingElement())
binding.Elements.Add(New HttpTransportBindingElement())
Return New CustomBinding(binding)
End Function