OperationContractAttribute.ProtectionLevel プロパティ

定義

操作のメッセージの暗号化、署名、または両方が必要かどうかを示す値を取得または設定します。

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

プロパティ値

ProtectionLevel 値のいずれか 1 つ。 既定値は、None です。

例外

値が、ProtectionLevel 値ではありません。

注釈

ProtectionLevel プロパティを使用して、操作のメッセージの暗号化、署名、または両方が必要かどうかを制御します。 ここで設定される値は、この操作で指定されるすべてのメッセージの既定値です。より狭いスコープでこの値をオーバーライドする場合は除きます。

ランタイムでの保護動作は、次のプロパティで設定された保護レベル値の組み合わせであることに注意してください。 こうしたプロパティは、階層構造を持ちます。 最も外側の値を設定すると、それより狭いスコープで異なる値を明示的に設定していなければ、より狭いスコープでその既定の設定が定まります。 この場合、外側の値は特に設定された値を除いて、それより狭いすべてのスコープで既定の設定として残ります。

たとえば、ServiceContractAttribute.ProtectionLevelProtectionLevel.EncryptAndSign に設定され、他のより狭いスコープに保護レベル設定が存在しない場合、操作コントラクト内のすべてのメッセージが暗号化および署名されます。 ただし、こうした操作の 1 つで ProtectionLevelProtectionLevel.Sign に設定されている場合、その操作のメッセージは署名されますが、コントラクト内の他のすべてのメッセージは暗号化および署名されます。

保護レベルとその前提条件とスコープの詳細については、「 保護レベルについて」を参照してください。

こうした値が設定されるスコープは次のとおりです。

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageHeaderAttribute プロパティ。

MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageBodyMemberAttribute プロパティ。

コントラクト上で明示的に指定された保護レベルが存在せず、基になるバインドで (トランスポート レベルまたはメッセージ レベルを問わず) セキュリティをサポートする場合、コントラクト全体の有効な保護レベルは ProtectionLevel.EncryptAndSign です。 バインドで (BasicHttpBinding などの) セキュリティをサポートしない場合、コントラクト全体の有効な System.Net.Security.ProtectionLevelProtectionLevel.None です。 したがって、コントラクトで ProtectionLevel.None を指定している場合でも、エンドポイント バインドによってはクライアントが要求するメッセージ レベルまたはトランスポート レベルのセキュリティ保護が異なる場合があります。

適用対象