Спасибо, что ответили на свой вопрос и предоставили только этот код. Похоже, что многие люди пытаются достичь этого, поэтому я могу указать им на этот вопрос в будущем.

исал собственный сервис WCF, использующий WSHttpBindings, и пытаюсь реализовать безопасность на уровне сообщений, используя сгенерированные мной сертификаты. К сожалению, я получаю скрытое исключение (через средство просмотра трассировки служб), в котором говорится: «Учетные данные, предоставленные для пакета, не были распознаны»

Пара замечаний:

Это должно быть сделано в коде, а не в конфигурации(Сервер / Клиент) Сертификаты - это сертификаты, которые находятся в локальном хранилище компьютера с доступными закрытыми ключами для моего пользователя во время отладки.Я чертовски погуглил и нашел хороший ресурс для настройки безопасности на основе сообщений WCFВот

Я не уверен, что мне не хватает. Большая часть этого материала кажется простой, за исключением создания идентификаторов конечных точек. Не получается с тем же сообщением, использую ли я DnsEndpointIdentities, сертификаты на основе или нет идентификаторов вообще.

Может кто-то указать мне верное направление?

Сторона сервера:

var binding = new WSHttpBinding
    {
      Security =
      {
        Mode = SecurityMode.Message,
        Message = 
        {
          ClientCredentialType = MessageCredentialType.Certificate,
          AlgorithmSuite = SecurityAlgorithmSuite.Basic256Sha256Rsa15
        }
      }
    };

_host = new ServiceHost(this)
{
  Credentials =
  {
    ServiceCertificate =
    {
      Certificate = ServiceCert
    },
    ClientCertificate =
    {
      Certificate = ClientCert,
      Authentication =
      {
        TrustedStoreLocation = StoreLocation.LocalMachine,
        RevocationMode = X509RevocationMode.NoCheck,
        CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust
       }
    }
  }
};
var address = new Uri(string.Format(@"http://serviceaddress"));
var ep = _host.AddServiceEndpoint(typeof (IService), binding, address);
ep.Address = new EndpointAddress(address, EndpointIdentity.CreateX509CertificateIdentity(ServiceCert));
_host.Open();

Сторона клиента:

var binding = new WSHttpBinding
    {
      Security =
      {
        Mode = SecurityMode.Message,
        Message =
        { 
          ClientCredentialType = MessageCredentialType.Certificate,
          AlgorithmSuite = SecurityAlgorithmSuite.Basic256Sha256Rsa15
        }
      }
    };
var address = new Uri(@"http://serviceaddress");
var endpoint = new EndpointAddress(address, EndpointIdentity.CreateX509CertificateIdentity(ServerCert));
var channelFactory = new ChannelFactory<IService>(binding, endpoint)
    {
      Credentials =
      {
        ServiceCertificate =
        {
          DefaultCertificate = ServerCert,
          Authentication =
          {
            RevocationMode = X509RevocationMode.NoCheck,
            TrustedStoreLocation = StoreLocation.LocalMachine,
            CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust
          }
        },
        ClientCertificate =
        {
          Certificate = ClientCert
        }
      }
    };
var channel = channelFactory.CreateChannel();

Ответы на вопрос(1)

Ваш ответ на вопрос