Cara: Membuat Pengikatan Kustom Menggunakan SecurityBindingElement

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

  1. Buat instans BindingElementCollection kelas dengan nama outputBec.

  2. Panggil metode statis M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true), yang mengembalikan instans kelas SymmetricSecurityBindingElement.

  3. Tambahkan SymmetricSecurityBindingElement ke koleksi (outputBec) dengan memanggil metode Add dari Collection<T> kelas BindingElement.

  4. Buat instans TextMessageEncodingBindingElement kelas dan tambahkan ke koleksi (outputBec). Ini menentukan pengodean yang digunakan oleh pengikatan.

  5. HttpTransportBindingElement Buat dan tambahkan ke koleksi (outputBec). Ini menentukan bahwa pengikatan menggunakan transportasi HTTP.

  6. Buat pengikatan kustom baru dengan membuat instans CustomBinding kelas dan meneruskan koleksi outputBec ke konstruktor.

  7. 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

Baca juga