MessageContractMemberAttribute.ProtectionLevel Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Üyenin olduğu gibi iletilip aktarılmayacağını, imzalanıp imzalanmayacağını veya şifrelenip şifrelenmeyeceğini belirtir.
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
Özellik Değeri
Değerlerden ProtectionLevel biri. Varsayılan değer: None.
Açıklamalar
veya MessageBodyMemberAttribute özniteliklerinde MessageHeaderAttribute özelliğini kullanmak ProtectionLevel için bağlamayı ve davranışları düzgün bir şekilde yapılandırmanız gerekir. Bu güvenlik özellikleri düzgün bir yapılandırma olmadan kullanılıyorsa (örneğin, güvenlik kimlik bilgileri sağlanmadan ileti bölümüyle birlikte kullanıldığında ProtectionLevel.Sign ) çalışma zamanında bir özel durum oluşturulur.
Ayrıca, koruma düzeyi her üst bilgi için ayrı ayrı belirlenir. Ancak SOAP gövdesi, gövde parçalarının sayısına bakılmaksızın yalnızca bir koruma düzeyine sahiptir. Vücudun koruma düzeyi, tüm gövde parçalarının en ProtectionLevel yüksek özellik değeri tarafından belirlenir. Örneğin, aşağıdaki sınıfı göz önünde bulundurun:
[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;
}
Bu örnekte üst recordID
bilgi korunmaz, patientName
imzalanır ve SSN
şifrelenir ve imzalanır. ve gövde parçaları daha düşük koruma düzeyleri belirtse comments
diagnosis
bile ileti gövdesinin tamamı şifrelenir ve imzalanır, ile en ProtectionLevel.EncryptAndSign az bir gövde bölümü medicalHistory
vardır.
Çalışma zamanındaki koruma davranışı, aşağıdaki özelliklerde ayarlanan koruma düzeyi değerlerin birleşimidir. Bu özellikler hiyerarşik bir yapıya sahiptir. En dıştaki değerin ayarlanması, daha dar bir kapsam için farklı bir değer açıkça ayarlanmadığı sürece tüm dar kapsamlar için varsayılan ayarı belirler. Bu durumda, dış değer, özel olarak ayarlanan hariç tüm dar kapsamlar için varsayılan değer olarak kalır.
Örneğin, olarak ayarlanırsa ProtectionLevel.EncryptAndSign ve diğer dar kapsamların koruma düzeyi ayarları yoksaServiceContractAttribute.ProtectionLevel, bir işlem sözleşmesindeki tüm iletiler şifrelenir ve imzalanır. Ancak, bu işlemlerden OperationContractAttribute biri olarak ayarlandıysa ProtectionLevel.Sign, bu işlemin iletileri imzalı ancak sözleşmedeki diğer tüm iletiler şifrelenir ve imzalı olur.
Koruma düzeyleri ve bunların varsayımları ve kapsamları hakkında ayrıntılı bilgi için bkz. Koruma Düzeyini Anlama.
Bu değerlerin ayarlandığı kapsamlar şunlardır:
ServiceContractAttribute.ProtectionLevel
OperationContractAttribute.ProtectionLevel
FaultContractAttribute.ProtectionLevel
MessageContractAttribute.ProtectionLevel
MessageContractMemberAttribute.ProtectionLevel üzerindeki System.ServiceModel.MessageHeaderAttributeözelliği.
MessageContractMemberAttribute.ProtectionLevel üzerindeki System.ServiceModel.MessageBodyMemberAttributeözelliği.
Sözleşmede açıkça belirtilen bir koruma düzeyi olmadığında ve temel bağlama güvenliği (aktarım veya ileti düzeyinde) desteklediğinde, sözleşmenin tamamı için geçerli koruma düzeyi olur ProtectionLevel.EncryptAndSign. Bağlama güvenliği (gibi BasicHttpBinding) desteklemiyorsa, geçerli System.Net.Security.ProtectionLevel olan ProtectionLevel.None sözleşmenin tamamı içindir. Sonuç, uç nokta bağlamaya bağlı olarak, sözleşme tarafından belirtildiğinde bile istemcilerin farklı ileti veya aktarım düzeyi güvenlik koruması gerektirebileceğidir ProtectionLevel.None.