Bagikan melalui


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

  1. Buat instans kelas BindingElementCollection 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 kelas TextMessageEncodingBindingElement dan tambahkan ke koleksi (outputBec). Ini menentukan pengodean yang digunakan oleh pengikatan.

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

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

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

Lihat juga