Sdílet prostřednictvím


MessageContractMemberAttribute.ProtectionLevel Vlastnost

Definice

Určuje, jestli se má člen přenášet tak, jak je, podepsaný nebo podepsaný a zašifrovaný.

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í formát je None.

Poznámky

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

Kromě toho se úroveň ochrany určuje pro každou hlavičku zvlášť. 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 ze 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 hlavička recordID není chráněná, patientName je podepsaná a SSN je zašifrovaná a podepsaná. Existuje alespoň jedna část těla , medicalHistorys ProtectionLevel.EncryptAndSign a, a proto je celé tělo zprávy šifrované a podepsané, i když comments části těla a diagnosis určují nižší úrovně ochrany.

Chování ochrany za běhu je kombinací 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ě vnější hodnota zůstává výchozí pro všechny užší obory s výjimkou toho, který je speciálně nastavený.

Pokud ServiceContractAttribute.ProtectionLevel je například nastavená hodnota a ProtectionLevel.EncryptAndSign žádné jiné užší obory nemají nastavení úrovně ochrany, všechny zprávy v kontraktu operace se zašifrují a podepisují. Pokud je ale jedna z těchto operací nastavená OperationContractAttribute na ProtectionLevel.Sign, zprávy pro danou operaci se podepisují, ale všechny ostatní zprávy v kontraktu se zašifrují a podepisují.

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

Rozsahy, ve kterých jsou tyto hodnoty nastaveny, jsou:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Vlastnost pro MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageHeaderAttribute.

Vlastnost pro MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageBodyMemberAttribute.

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

Platí pro