FaultContractAttribute.ProtectionLevel Proprietà

Definizione

Consente di specificare il livello di protezione che l'associazione deve applicare all'errore SOAP.

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

Valore della proprietà

Uno dei valori di ProtectionLevel. Il valore predefinito è None.

Commenti

Utilizzare la proprietà FaultDescription.ProtectionLevel per specificare il livello di sicurezza dei meccanismi di crittografia, di firma o di entrambi i tipi applicati dall'associazione durante l'invio dell'errore SOAP. È consigliabile garantire che negli errori delle operazioni i requisiti del livello di protezione riguardanti il contratto siano definiti in modo esplicito. Il livello di protezione predefinito è ProtectionLevel.None, ovvero il messaggio di errore SOAP che si sta definendo non richiede la crittografia o una firma digitale (anche se l'associazione può fornire questo supporto se è configurato per farlo). Se un messaggio di errore contiene informazioni sensibili o che possono causare problemi di sicurezza, è consigliabile impostare la ProtectionLevel proprietà su ProtectionLevel.EncryptAndSign. Per altre informazioni sui problemi di sicurezza, vedere Informazioni sul livello di protezione.

Il comportamento della protezione in fase di esecuzione deriva dall'unione delle proprietà a livello di protezione che presentano una struttura gerarchica. La configurazione del valore esterno determina l'impostazione predefinita per tutti gli ambiti più ristretti a meno che non venga impostato esplicitamente un valore diverso per un ambito più ristretto. In questo caso, il valore esterno rimane l'impostazione predefinita per tutti gli ambiti più ristretti, ad eccezione di quello impostato in modo specifico.

Ad esempio, se ServiceContractAttribute.ProtectionLevel è impostato su ProtectionLevel.EncryptAndSign e nessun altro ambito più stretto dispone di impostazioni a livello di protezione, tutti i messaggi in un contratto operativo vengono crittografati e firmati, inclusi i messaggi di errore. Se, tuttavia, una di queste operazioni ha impostato OperationContractAttribute su ProtectionLevel.Sign, i messaggi per tale operazione vengono firmati, ma tutti gli altri messaggi nel contratto vengono crittografati e firmati, inclusi i messaggi di errore.

Gli ambiti di impostazione di questi valori sono:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

La proprietà MessageContractMemberAttribute.ProtectionLevel è impostata su System.ServiceModel.MessageHeaderAttribute.

La proprietà MessageContractMemberAttribute.ProtectionLevel è impostata su System.ServiceModel.MessageBodyMemberAttribute.

Quando nel contratto non è stato specificato in modo esplicito alcun livello di protezione e l'associazione sottostante supporta la sicurezza (sia essa a livello di trasporto o di messaggio), il livello di protezione effettivo dell'intero contratto è ProtectionLevel.EncryptAndSign. Se l'associazione non supporta la sicurezza (ad esempio BasicHttpBinding), il livello di sicurezza System.Net.Security.ProtectionLevel effettivo è ProtectionLevel.None per l'intero contratto. Ne consegue che a seconda dell'associazione dell'endpoint i client possono richiedere un sistema diverso di protezione a livello di messaggio o di trasporto anche se il contratto prevede il livello di sicurezza ProtectionLevel.None.

Si applica a