SOAP 1.2 через базовую аутентификацию SSL + HTTP или WS-Security?

Итак, я буду первым, кто признает, что я мало знаю о внутренностях WS-Security. У меня есть фабрика сервисов SOAP как ниже. При использовании этой службы с внутренними клиентами .NET, предназначенными только для тестирования (с использованием автоматически сгенерированного прокси-класса .cs через svcutil.exe + автоматически сгенерированный WSDL), все в порядке. Я вижу первые 4 пары согласования запроса-ответа безопасности SOAP до 5-й «фактический» (зашифрованный) SOAP-запрос/ответ. Я понимаю безопасность в целом, но хотел бы я знать подробности об этом конкретном рукопожатии — я полагаю, они выполняют обмен ключами?

Во всяком случае, отчасти потому, что

  1. я не знаю я не знаю базового квитирования безопасности SOAP (WS-Security)
  2. я знаю базовую аутентификацию HTTPS и HTTP (и предпочитаю скорость транспорта SSL по сравнению с операциями шифрования/проверки подписи SOAP для каждого сообщения)
  3. я хочу защитить Связь с конечной точкой SOAP при сохранении совместимости с клиентами, отличными от .NET

. должен выполнять обмен SOAP через базовую аутентификацию HTTPS + HTTP. Итак, вопросы сводятся к следующему:

  1. Подходят ли обмены SOAP через базовую аутентификацию HTTPS + HTTP? или редкая (=интероп-кошмар!) мерзость?
  2. Дополнение к предыдущему : Как мне настроить фабрику сервисов на рекомендуемые параметры? Излишне говорить, что я хочу держаться подальше от проверки подлинности Windows, которая бессмысленна в интернет-среде...

     открытый класс SoapServiceHostFactory : ServiceHostFactory
    {
    частный тип serviceInterfaceType;
    
    public SoapServiceHostFactory (тип serviceInterfaceType)
     {
    this.serviceInterfaceType = serviceInterfaceType;
     }
    
    защищенное переопределение ServiceHost CreateServiceHost (тип serviceType, Uri [] baseAddresses)
     {
    Хост ServiceHost = base.CreateServiceHost (serviceType, baseAddresses);
    ServiceMetadataBehavior smb = host.Description.Behaviors.Find();
    
     // Включить метаданные
    если (что-то == ноль)
     {
    smb = new ServiceMetadataBehavior();
    host.Description.Behaviors.Add(smb);
     }
    smb.HttpGetEnabled = истина;
    
     // Включить отладку для сервиса
    ServiceDebugBehavior sdb = host.Description.Behaviors.Find();
    если (sdb == ноль)
     {
    sdb = новый ServiceDebugBehavior();
    host.Description.Behaviors.Add(sdb);
     }
    sdb.IncludeExceptionDetailInFaults = истина;
    
     // Конфигурация безопасности SOAP
    WSHttpBinding myBinding = new WSHttpBinding();
    myBinding.Security.Mode = SecurityMode.Transport;
    
    хозяин.AddServiceEndpoint (serviceInterfaceType, myBinding, "");
    вернуть хозяина;
     }
    }
     
5
задан DeepSpace101 3 March 2012 в 01:37
поделиться