Sdílet prostřednictvím


MessageContractMemberAttribute.ProtectionLevel Vlastnost

Definice

Určuje, zda má být člen přenášen as-is, podepsán nebo podepsán a zašifrován.

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

Hodnota vlastnosti

Jedna z ProtectionLevel hodnot. Výchozí hodnota je None.

Poznámky

Chcete-li použít ProtectionLevel vlastnost v atributech MessageHeaderAttribute nebo MessageBodyMemberAttribute v atributech, musíte správně nakonfigurovat vazby a chování. Pokud se tyto funkce zabezpečení používají bez správné konfigurace (například použití ProtectionLevel.Sign části se zprávou bez zadání přihlašovacích údajů zabezpečení), vyvolá se za běhu výjimka.

Kromě toho je úroveň ochrany určena pro každou hlavičku jednotlivě. Tělo SOAP má však pouze jednu úroveň ochrany bez ohledu na počet částí těla. Úroveň ochrany těla je určena nejvyšší ProtectionLevel hodnotou vlastnosti všech částí těla. Představte si například následující třídu:

[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;
}

V tomto příkladu není hlavička recordID chráněná, patientName je podepsaná a SSN je šifrovaná a podepsaná. Existuje alespoň jedna část těla, medicalHistorys ProtectionLevel.EncryptAndSign a proto je celý text zprávy zašifrován a podepsán, i když comments části těla diagnosis určují nižší úrovně ochrany.

Chování ochrany za běhu je kombinace hodnot na úrovni ochrany nastavených u následujících vlastností. Tyto vlastnosti mají hierarchickou strukturu. Nastavení vnější hodnoty vytvoří výchozí nastavení pro všechny užší obory, pokud není explicitně nastavena jiná hodnota pro užší obor. V tomto případě zůstává vnější hodnota výchozím nastavením pro všechny užší obory s výjimkou této sady.

Pokud ServiceContractAttribute.ProtectionLevel je například nastavená ProtectionLevel.EncryptAndSign hodnota a žádné další užší obory nemají nastavení úrovně ochrany, všechny zprávy v kontraktu operace jsou šifrované a podepsané. Pokud je však jedna z těchto operací nastavena na OperationContractAttributeProtectionLevel.Sign, zprávy pro danou operaci jsou podepsány, ale všechny ostatní zprávy v kontraktu jsou zašifrovány a podepsány.

Podrobnosti o úrovních ochrany a jejich předpokladech a oborech najdete v tématu Principy úrovně ochrany.

Obory, na kterých jsou tyto hodnoty nastaveny:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Vlastnost MessageContractMemberAttribute.ProtectionLevel na System.ServiceModel.MessageHeaderAttribute.

Vlastnost MessageContractMemberAttribute.ProtectionLevel na System.ServiceModel.MessageBodyMemberAttribute.

Pokud není u smlouvy explicitně zadána žádná úroveň ochrany a podkladová vazba podporuje zabezpečení (ať už na úrovni přenosu nebo zprávy), je ProtectionLevel.EncryptAndSignúčinná úroveň ochrany pro celou smlouvu . Pokud vazba nepodporuje zabezpečení (například BasicHttpBinding), platí System.Net.Security.ProtectionLevelProtectionLevel.None pro celou smlouvu. Výsledkem je to, že klienti mohou v závislosti na vazbě koncového bodu vyžadovat jinou ochranu zabezpečení na úrovni zprávy nebo přenosu, i když smlouva určuje ProtectionLevel.None.

Platí pro