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.
Windows Communication Foundation (WCF) mencakup 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 informasi selengkapnya tentang membuat pengikatan kustom, lihat Memperluas Pengikatan.
Peringatan
SecurityBindingElement tidak mendukung IDuplexSessionChannel bentuk saluran, yang merupakan bentuk saluran default yang digunakan oleh transportasi TCP saat TransferMode diatur ke Buffered. Anda harus mengatur TransferMode ke Streamed agar dapat digunakan SecurityBindingElement dalam skenario ini.
Membuat Pengikatan Kustom
Dalam WCF semua pengikatan terdiri dari elemen pengikatan. Setiap elemen pengikatan berasal dari BindingElement kelas . Untuk pengikatan standar yang disediakan sistem, 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 ke dalam koleksi yang diwakili oleh instans kelas BindingElementCollection, dan kemudian mengatur 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 di setiap pengikatan.
SecurityBindingElement
Tiga elemen pengikatan terkait dengan keamanan tingkat pesan, yang semuanya berasal dari SecurityBindingElement kelas . Ketiganya adalah TransportSecurityBindingElement, SymmetricSecurityBindingElement, dan AsymmetricSecurityBindingElement. TransportSecurityBindingElement digunakan untuk menyediakan 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 ke dalam 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 menunjukkan 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 Perjanjian | Pola Pertukaran Pesan untuk Kontrak | Pola Pertukaran Pesan Kontrak |
|---|---|---|---|---|
Datagram |
Request Reply |
Duplex |
||
| Transportasi | Https | |||
| OneWayBindingElement | ||||
| HttpsTransportBindingElement | HttpsTransportBindingElement | |||
| PKT | ||||
| OneWayBindingElement | ||||
| SSL atau Windows StreamSecurityBindingElement | SSL atau Windows StreamSecurityBindingElement | SSL atau Windows StreamSecurityBindingElement | ||
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
| Pesan | http | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement (mode autentikasi = SecureConversation) |
| CompositeDuplexBindingElement | ||||
| OneWayBindingElement | OneWayBindingElement | |||
| HttpTransportBindingElement | HttpTransportBindingElement | HttpTransportBindingElement | ||
| Tcp | SecurityBindingElement | SecurityBindingElement | SymmetricSecurityBindingElement (mode autentikasi = SecureConversation) | |
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
| Campuran (transportasi yang menggunakan kredensial untuk pesan) | Https | TransportSecurityBindingElement | TransportSecurityBindingElement | |
| OneWayBindingElement | ||||
| HttpsTransportBindingElement | HttpsTransportBindingElement | |||
| PKT | TransportSecurityBindingElement (ElemenPengikatanKeamananTransportasi) | SymmetricSecurityBindingElement (mode autentikasi = SecureConversation) | SymmetricSecurityBindingElement (mode autentikasi = SecureConversation) | |
| OneWayBindingElement | ||||
| SSL atau Windows StreamSecurityBindingElement | SSL atau Windows StreamSecurityBindingElement | SSL atau Windows StreamSecurityBindingElement | ||
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement |
Perhatikan bahwa ada banyak pengaturan yang dapat dikonfigurasi pada SecurityBindingElements. Untuk informasi selengkapnya, lihat Mode Autentikasi dari SecurityBindingElement.
Untuk informasi selengkapnya, lihat Percakapan Aman dan Sesi Aman.
Prosedur
Untuk membuat pengikatan kustom yang menggunakan SymmetricSecurityBindingElement
Buat instans BindingElementCollection kelas 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 metodeAdddari Collection<T> kelas BindingElement.Buat instans TextMessageEncodingBindingElement kelas dan tambahkan ke koleksi (
outputBec). Ini menentukan pengodean yang digunakan oleh pengikatan.HttpTransportBindingElement Buat dan tambahkan ke koleksi (
outputBec). Ini menentukan bahwa pengikatan menggunakan transportasi HTTP.Buat pengikatan kustom baru dengan membuat instans CustomBinding kelas dan meneruskan koleksi
outputBecke konstruktor.Pengikatan kustom yang dihasilkan berbagi banyak karakteristik yang sama dengan standar WSHttpBinding. 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 ditunjukkan pada langkah 4. Dua lainnya dapat dikontrol menggunakan pengaturan pada pengikatan standar.
Example
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