Share via


FaultContractAttribute.ProtectionLevel プロパティ

定義

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

プロパティ値

ProtectionLevel

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

注釈

FaultDescription.ProtectionLevel プロパティを使用して、SOAP エラーの送信時に、バインドを行う必要がある暗号化、署名、またはその両方の程度を指定します。 コントラクトのセキュリティ保護レベル要件を、操作のエラーで明示的に決定することを強くお勧めします。 既定の保護レベルは ProtectionLevel.None、定義している SOAP エラー メッセージに暗号化またはデジタル署名が必要ないことを意味します (ただし、そうするように構成されている場合は、バインディングでこのサポートが提供される場合があります)。 エラー メッセージに機密性の高い情報やセキュリティ上の問題が発生する可能性がある情報が含まれている場合は、プロパティを ProtectionLevel .に設定 ProtectionLevel.EncryptAndSignすることを強くお勧めします。 セキュリティの問題の詳細については、「 保護レベルについて」を参照してください。

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

たとえば、他の狭いスコープにProtectionLevel.EncryptAndSign設定されていて、保護レベルの設定がない場合ServiceContractAttribute.ProtectionLevel、操作コントラクト内のすべてのメッセージが暗号化され、署名されます (エラー メッセージを含む)。 ただし、これらの操作の 1 つが設定ProtectionLevel.Signされている場合、OperationContractAttributeその操作のメッセージは署名されますが、コントラクト内の他のすべてのメッセージは暗号化され、署名されます (エラー メッセージを含む)。

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

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 を指定している場合でも、エンドポイント バインドによってはクライアントが要求するメッセージ レベルまたはトランスポート レベルのセキュリティ保護が異なる場合があります。

適用対象