SOAP 1.2 через SSL + базовая аутентификация HTTP или WS-Security? - PullRequest
5 голосов
/ 03 марта 2012

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

В любом случае, отчасти потому, что

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

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

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

    public class SoapServiceHostFactory : ServiceHostFactory
    {
        private Type serviceInterfaceType;
    
        public SoapServiceHostFactory(Type serviceInterfaceType)
        {
            this.serviceInterfaceType = serviceInterfaceType;
        }
    
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
            ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
    
            // Enable metadata
            if (smb == null)
            {
                smb = new ServiceMetadataBehavior();
                host.Description.Behaviors.Add(smb);
            }
            smb.HttpGetEnabled = true;
    
            // Enable debugging for service
            ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
            if (sdb == null)
            {
                sdb = new ServiceDebugBehavior();
                host.Description.Behaviors.Add(sdb);
            }
            sdb.IncludeExceptionDetailInFaults = true;
    
            // SOAP Security configuration
            WSHttpBinding myBinding = new WSHttpBinding();
            myBinding.Security.Mode = SecurityMode.Transport;
    
            host.AddServiceEndpoint(serviceInterfaceType, myBinding, "");
            return host;
        }
    }
    

1 Ответ

5 голосов
/ 03 марта 2012

SSL + Basic Auth значительно более совместимы, чем WS-Security.

Если вы просто делаете двухточечную интеграцию, то SSL будет верным способом, если у вас более сложная многопользовательская, многопартийная интеграция, то вам, возможно, придется испытать ее с помощью WS- Безопасность.

...