Bagikan melalui


MessageContractMemberAttribute.ProtectionLevel Properti

Definisi

Menentukan apakah anggota akan dikirimkan as-is, ditandatangani, atau ditandatangani dan dienkripsi.

public:
 property System::Net::Security::ProtectionLevel ProtectionLevel { System::Net::Security::ProtectionLevel get(); void set(System::Net::Security::ProtectionLevel value); };
public System.Net.Security.ProtectionLevel ProtectionLevel { get; set; }
member this.ProtectionLevel : System.Net.Security.ProtectionLevel with get, set
Public Property ProtectionLevel As ProtectionLevel

Nilai Properti

Salah ProtectionLevel satu nilai. Defaultnya adalah None.

Keterangan

Untuk menggunakan ProtectionLevel properti baik di MessageHeaderAttribute atribut atau MessageBodyMemberAttribute , Anda harus mengonfigurasi pengikatan dan perilaku dengan benar. Jika fitur keamanan ini digunakan tanpa konfigurasi yang tepat (misalnya, menggunakan ProtectionLevel.Sign dengan bagian pesan tanpa memberikan kredensial keamanan) pengecualian dilemparkan pada waktu proses.

Selain itu, tingkat perlindungan ditentukan untuk setiap header satu per satu. Namun, badan SOAP hanya memiliki satu tingkat perlindungan, terlepas dari jumlah bagian tubuh. Tingkat perlindungan tubuh ditentukan oleh nilai properti tertinggi ProtectionLevel dari semua bagian tubuh. Sebagai contoh, perhatikan kelas berikut:

[MessageContract]
public class PatientRecord
{
   [MessageHeader(ProtectionLevel=None)] public int recordID;
   [MessageHeader(ProtectionLevel=Sign)] public string patientName;
   [MessageHeader(ProtectionLevel=EncryptAndSign)] public string SSN;
   [MessageBody(ProtectionLevel=None)] public string comments;
   [MessageBody(ProtectionLevel=Sign)] public string diagnosis;
   [MessageBody(ProtectionLevel=EncryptAndSign)] public string medicalHistory;
}

Dalam contoh ini, recordID header tidak dilindungi, patientName ditandatangani, dan SSN dienkripsi dan ditandatangani. Setidaknya ada satu bagian tubuh, medicalHistory, dengan ProtectionLevel.EncryptAndSign dan dengan demikian seluruh isi pesan dienkripsi dan ditandatangani, meskipun comments bagian isi dan diagnosis menentukan tingkat perlindungan yang lebih rendah.

Perilaku perlindungan saat runtime adalah kombinasi nilai tingkat perlindungan yang ditetapkan pada properti berikut. Properti ini memiliki struktur hierarkis. Mengatur nilai terluar menetapkan pengaturan default untuk semua cakupan yang lebih sempit kecuali nilai yang berbeda untuk cakupan yang lebih sempit diatur secara eksplisit. Dalam hal ini, nilai luar tetap default untuk semua cakupan yang lebih sempit dengan pengecualian yang secara khusus ditetapkan.

Misalnya, jika ServiceContractAttribute.ProtectionLevel diatur ke ProtectionLevel.EncryptAndSign dan tidak ada cakupan sempit lainnya yang memiliki pengaturan tingkat perlindungan, semua pesan dalam kontrak operasi dienkripsi dan ditandatangani. Namun, jika salah satu operasi tersebut OperationContractAttribute telah diatur ke ProtectionLevel.Sign, maka pesan untuk operasi tersebut ditandatangani tetapi semua pesan lain dalam kontrak dienkripsi dan ditandatangani.

Untuk detail tentang tingkat perlindungan dan asumsi dan cakupannya, lihat Memahami Tingkat Perlindungan.

Cakupan di mana nilai-nilai ini diatur adalah:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Properti MessageContractMemberAttribute.ProtectionLevel pada System.ServiceModel.MessageHeaderAttribute.

Properti MessageContractMemberAttribute.ProtectionLevel pada System.ServiceModel.MessageBodyMemberAttribute.

Ketika tidak ada tingkat perlindungan yang secara eksplisit ditentukan pada kontrak dan pengikatan yang mendasar mendukung keamanan (baik di tingkat transportasi atau pesan), tingkat perlindungan efektif untuk seluruh kontrak adalah ProtectionLevel.EncryptAndSign. Jika pengikatan tidak mendukung keamanan (seperti BasicHttpBinding), efektivitasnya System.Net.Security.ProtectionLevel adalah ProtectionLevel.None untuk seluruh kontrak. Hasilnya adalah bahwa tergantung pada pengikatan titik akhir, klien dapat memerlukan pesan atau perlindungan keamanan tingkat transportasi yang berbeda bahkan ketika kontrak menentukan ProtectionLevel.None.

Berlaku untuk