Быстрый поиск (почему я не видел, если раньше ...), ссылка, которую я указал в вопросе, указывала на другой образец на http://msdn.microsoft.com/en-us/library/aa702565.aspx
Он несколько отличается от первого примера и содержит комментарий об использовании FaultException вместо SecurityTokenException, если вы хотите предоставить подробности сообщения.
public override void Validate(string userName, string password)
{
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
if (!(userName == "test1" && password == "1tset") && !(userName == "test2" && password == "2tset"))
{
// This throws an informative fault to the client.
throw new FaultException("Unknown Username or Incorrect Password");
// When you do not want to throw an infomative fault to the client,
// throw the following exception.
// throw new SecurityTokenException("Unknown Username or Incorrect Password");
}
}
Исключение, пойманное на клиенте, теперь содержит внутреннее исключение типа FaultException с текстовым сообщением, которое я хочу предоставить.