web.configを介してUserNamePasswordValidatorに接続されたWCFサービスがありますが、問題ありません。私のバリデーターでは、Validate をオーバーライドし、資格情報を確認して、必要に応じて FaultException をスローします。
例:
public class CredentialValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "dummy")
{
throw new FaultException<AuthenticationFault>(new AuthenticationFault(), "Invalid credentials supplied");
}
}
}
このサービスを .NET アプリケーションで自分で使用し、無効な資格情報を提供すると、次のメッセージとともに MessageSecurityException がスローされます。
「保護されていない、または誤って保護された障害が相手から受信されました。障害コードと詳細については、内部の FaultException を参照してください。」
私が予想していた FaultException は、MessageSecurityException の InnerException です。
クライアントに FaultException だけを受信させる方法はありますか?
MessageSecurityException は、例外の真の原因に関して特に説明的ではありません (SO をすばやく検索すると、サーバー/クライアントの時刻同期を含むさまざまな問題が発生します..)。また、サード パーティがサービスを利用することになるため、できるだけ明確にする。